下载一个mingw的utils包,用0.3版本,0.41版本有问题。
拷贝mysql/lib/opt下的libmysql.lib文件到mingw的home/$user目录下,拷贝mysql/lib/opt/libmysql.dll文件到mingw的bin目录下.
把utils的包解压,把bin目录下的文件拷贝到mingw的bin目录下.
进行mingw的环境,执行
reimp -d libmysql.lib
dlltool -k -d libmysql.def -l libmysql.a
把生成的libmysql.a拷贝到mingw的lib下
把mysql/include下的全部文件拷贝到mingw/include下(省事)
在mysql中创建数据库test,创建表mt(id int , content varchar(20))
写c代码,m.cc
#include <iostream>
#include <windows.h>
#include <cstdlib>
#include <cstdio>
#include <mysql.h>
using namespace std
MYSQL *conn
int main() {
MYSQL_RES * res_set
MYSQL_ROW row
unsigned int i, ret
MYSQL_FIELD * field
unsigned int num_fields
conn = mysql_init(NULL)
if(conn != NULL)
cout <<"mysql_init success!" <<endl
else {
printf("failed !\n")
return 0
}
ret = mysql_options(conn, MYSQL_SET_CHARSET_NAME, "gbk")//最好与数据库charset一致
if(ret == 0)
cout <<"mysql_options success!" <<endl
else printf("failed !\n")
if(mysql_real_connect(conn, "localhost", "root","root", "test", 0, NULL, 0) != NULL)
cout <<"mysql_real_connect success!" <<endl
else printf("failed !\n")
mysql_query(conn, "INSERT INTO mt VALUES (1,'ABCDEF'),(2,'汉字支持')")
printf("insert affect %d sentences\n", mysql_affected_rows(conn))
if(mysql_query(conn,"SELECT * FROM mt"))
cout <<"mysql query failed!\n"
res_set = mysql_store_result(conn)
if (res_set == NULL)
cout <<"res_set is null" <<endl
num_fields = mysql_num_fields(res_set)
for(i = 0i <num_fieldsi++)
{
field = mysql_fetch_field_direct(res_set, i)
printf("%s\t\t", field->name)
}
cout <<endl
while ((row = mysql_fetch_row(res_set)) != NULL)
{
for (i = 0i <mysql_num_fields(res_set)i ++)
{
printf("%s\t\t",row[i] != NULL ? row[i] : "NULL")
}
printf("\n")
}
mysql_close(conn)
return 0
}
编译:g++ -lmysql -o m m.cc
注意编译器一定要和MYSQL的平台版本一致,32位的用32位的编译器编译,64位的用64位的编译器编译。准备工作:MYSQL的目录:D:\SQL_Server\mariadb
Qt5.1.1的目录:C:\Qt
1. 先将D:\SQL_Server\mariadb中的include\和lib\文件夹复制到根目录(C:),因为后面make时路径不能有空格。
2. 打开QT5.1.1 for Desktop(MinGW 4.8)
cd C:\Qt\Qt5.1.1\5.1.1\Src\qtbase\src\plugins\sqldrivers\mysql
qmake "INCLUDEPATH+=D:\SQL_Server\mariadb\include" "LIBS+=D:\SQL_Server\mariadb\lib\libmysql.lib" mysql.pro
mingw32-make
如果出现找不到mysql.h文件就用qtcreator打开mysql.pro文件,配置项目,然后编译,就会出现错误提示,把#include 改成#include ,编译就行了,或回到命令行再次执行mingw32-make即可.
3. 编译成功后。
进入到C:\Qt\Qt5.1.1\5.1.1\Src\qtbase\plugins\sqldrivers目录下,选中qsqlmysql.dll和 qsqlmysqld.dll两个文件,
复制到C:\Qt\Qt5.1.1\5.1.1\mingw48_32\plugins\sqldrivers目录下。
我在编译oracle驱动时也遇到了这个错误,因为我安装的是QT-VS,所以后来在VS中打开.pro文件,配置了一下附加包含目录和附加依赖项目就可以了;(分别为:Oracle\..\OCI\include Oracle\..\OCI\lib\MSVC\oci.lib )。希望对遇到同样问题的人有所帮助。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)