折腾了昨天一个下午,再加今天上午,到现在终于搞定了
使用了google、百度以及本论坛中能够搜索到的所有资料都没解决我的问题,因此有必要总结一下:
我的QT版本是2009.03,mysql版本是6.0(好像是去年安装到机器上的,现在mysql网站最高版本是5.4,疑惑ing),使用windows xp操作系统,开发环境Eclipse(Start Eclipse with MinGW启动的)
首先像大多数人碰上的问题一样,编译不通过,后来发现make不支持太空格的,把mysql的include 和lib目录复制到 d:\mysql目录下
qmake -o makefile "INCLUDEPATH+=D:\MySQL\include" "LIBS+=D:\MySQL\lib\opt\libmysql.lib" mysql.pro
make
这样make后只能生成debug版本的,必须再 make -f makefile.release才能生成release版的,而且必须手工拷贝qsqlited4.dll qsqlited4.a qsqlite4.dll qsqlite4.a D:\QT\2009.03\qt\plugins\sqldrivers目录下,不想很多资料上所说的自动生成到D:\QT\2009.03\qt\plugins\sqldrivers目录下。
有个资料说必须使用mingw-utils包下载:
http://www.qtcn.org/download/mingw-utils-0.3.tar.gz,可能与qt版本有关,用qt2009.03不需要这个工具生成libmysql.a也能编译通过。另外在编译过程中发现
qmake -o makefile "INCLUDEPATH+=D:\MySQL\include" "LIBS+=D:\MySQL\lib\opt\libmysql.lib" mysql.pro 中libmysql.lib为全部大写字母,make会报告一个ld.exe找不到 libmysql错误,让人感到莫名其妙。
编译总算搞定后,运行我的test程序,报告 driver not loaded错误,使用plugintester(qt官方网站提供,测试plugins的加载)显示qsqlited4.dll 和qsqlite4.dll均没法加载,搜索资料,把libmySQL.dll拷贝到所有能考虑到的目录下均不能解决问题,拷贝到qt的plugins时 pugintester会报告libmySQL.dll也不能加载,郁闷之极差点放弃!
既然libmySQL.dll也不能,开始怀疑是mysql版本的问题了,到mysql网站下载了mysql5.1版本,重新经过编译,拷贝,运行我的test.exe.终于提示数据库找不到了,而不是什么driver not loaded错误了,但高兴劲还没过呢,新问题又来了!
在eclipse开发环境中运行test.exe依然报考driver not loaded 错误,又被迷惑了1个小时,其中周折不在细说,解决办法是:Eclipse中project properties Run/Debug Setings 选中test.ext点编辑,Environment 编辑path变量,把D:\MySQL\MySQL Server 5.1\bin加进去,OK!接下去可以学习QSqlQuery了!再见