Qt编译MySQL驱动
最近项目用到mysql数据库,程序是在Qt中开发的,在网上找了资料,随便写了两句,
myDB = new QSqlDatabase(QSqlDatabase::addDatabase("QMYSQL"));
myDB->setHostName("192.168.1.6");
myDB->setDatabaseName("KaoQingJi");
myDB->setPort(3306);
myDB->setUserName("root");
myDB->setPassword("123456");
myDB->open();
程序运行之后报如下错误
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC QODBC3
很明显Qt没有mysql的驱动,好自己动手编译吧;
1.首先安装QtSdk;
首先说明下Qt版本,我使用的版本是诺基亚发布的最后一个SDK版本,文件名为QtSdk-offline-win-x86-v1_2_1.exe,此版本安装完毕后包括Qt4.7.4和Qt4.8.1,大家在安装的时候注意下,由于要编译mysql的驱动,因此安装此sdk包时,不要选择默认的Default,要选择Custom进行安装,因为Default在安装的时候是不安装QtSource的,选择Custom后进行简单的配置,记得一定要选择QtSource,这个包里面就有支持Mysql的Qt驱动源码,一路点下去就会自动安装。
此版本的Qt下载地址如下:
http://pan.baidu.com/share/link?shareid=258560&uk=1042049493
2.安装mysql
我选择的mysql的版本为mysql-5.1.51选择Microsoft Windows 32. (Windows Installer format) 程序就可以,其他版本的mysql我没试过,应该也可以的,就是太大了。
下载地址:http://downloads.mysql.com/archives.php?p=mysql-5.1&v=5.1.51
安装的时候路径中尽量不要有空格,把所有的空格去掉;
安装完毕后我们需要的libmysql.dll文件就在你的安装路径下面的D:MySQLMySQL5.1libopt下面;这个是我的路径,你的路径可能不同,但这个文件肯定能找到的,
还需要另外一个工具,mingw-utils-0.4-1.zip,此工具用于将libmysql.dll转换成libmysql.lib文件,为什么需要转换呢?因为Qt用的编译器是MingW编译器,此编译器不能直接使用dll文件,
下载地址:
http://code.google.com/p/easymingwtoolkit/downloads/detail?name=mingw-utils-0.4-1.zip&can=2&q=
下载完毕后,打开此包,把bin文件下的reimp.exe文件解压到Qt安装路径下的mingw编译器下,具体路径为C:QtSDKmingwbin
然后再开始菜单中找到QtSDk->Desktop->Qt 4.8.1 for Desktop (MinGW);打开此终端
打开之后就跟cmd的黑屏一样的,这时切换目录到mysql目录中libmysql.dll所在文件夹,即D:MySQLMySQL5.1libopt目录下;
输入一下命令进行dll转换,
cd D:MySQLMySQL5.1libopt
reimp -d libmysql.lib (生成 libmysql.def文件)
dlltool -k -d libmysql.def -l libmysql.a (生成 libmysql.a文件)
上面两条命令执行完毕后,就得到我们需要的文件了libmysql.a
这是切换路径到C:QtSDKQtSources4.8.1srcpluginssqldriversmysql目录下面,此路径下面就是mysql的Qt源码;
cd C:QtSDKQtSources4.8.1srcpluginssqldriversmysql
qmake -o Makefile "INCLUDEPATH+=D:/MySQL/MySQL5.1/include" "LIBS+=D:/MySQL/MySQL5.1/lib/opt/libmysql.a" mysql.pro
上面这条命令在输入的时候,大家要注意路径是否跟自己的一致。
如果你的mysql在安装的时候有空格,可以将bin目录和include这两个目录拷贝到c盘的根目录,然后输入路径就可以了
把D:MySQLMySQL5.1libopt目录下的libmysql.dll文件拷贝到C:QtSDKDesktopQt4.8.1mingwbin,如果不拷贝,编译的时候会提示找不到llibmysql文件
上面命令执行完毕后,
然后
make
make release
不报错的话,就会在release目录和debug目录中分别生成libqsqmysqld4.a和libqsqmysql4.dll文件,
把这四个文件拷贝到C:QtSDKDesktopQt4.8.1mingwpluginssqldrivers目录下面。
到此,Qt下,mysql的驱动就编译好了。。。