现在的位置: 首页 > 综合 > 正文

QT 4.7.3 编译mysql驱动

2012年01月28日 ⁄ 综合 ⁄ 共 1857字 ⁄ 字号 评论关闭

解决 mysql 的 Qt 驱动问题

这个问题困扰了我一些时间, 因为 Qt 安装完后, 没有带 mySQL 的驱动, 写好的程序运行会提示说 “Driver not loaded”。不过还好, 在 src 目录下可以找到 mysql qt 驱动的源代码。 后来我用 Qt assistant 上说的方法, 但始终无法生成库文件, 总有链接错误。 后来google 一下,在 qtcn 上看到他们站长发的一篇文章,才知道是 mysql 默认带的库文件是 ms 格式的, 所以使用 make 的话,ld 程序链接时会失败。 如果大家使用linux系统,
那么就只需按 assistant 说的就够了, 下面 XChinux 也提到了。

解决的办法他也给出了。转录如下:

以下引用引自:http://www.qtcn.org/bbs/read.php?tid=4210&fpage=&toread=&page=1
作者:XChinux

QUOTE:
Qt4 OpenSource for mingw中编译MySQL驱动

mingw-utils包下载:http://www.qtcn.org/download/mingw-utils-0.3.tar.gz

在Qt4的文档中在Windows下关于怎样编译mysql的驱动上面说

You need to get the MySQL installation files. Run SETUP.EXE and choose "Custom Install". Install the "Libs & Include Files" Module. Build the plugin as follows (here it is assumed that MySQL is installed in C:\MYSQL):
   cd %QTDIR%\src\plugins\sqldrivers\mysql
   qmake -o Makefile "INCLUDEPATH+=C:\MYSQL\INCLUDE" "LIBS+=C:\MYSQL\LIB\OPT\LIBMYSQL.LIB" mysql.pro
   nmake
If you are not using a Microsoft compiler, replace nmake with make in the line above.

这就是一个容易搞混的地方,上面是使用的libmysql.lib和nmake来编译的,如果使用的是msvc的编译器,那上面是没问题的,但是如果使用的是mingw编译器,那就会出错,有undefined reference....等类错误字样。这是因为mingw使用的库和msvc使用的不同格式的库而引起的。而mysql只提供了msvc可使用的库。 qt4 for mingw要想编译出qsqlmysql库来,我们先得编译出mingw需要的libmysql.a这个文件来,可使用mingw工具来生成。
mingw -utils包里的reimp命令(如果没有这个命令的话,可从本帖开头处给出的地址中下载这个文件,并把它解压开后的bin目录里的内容拷贝到 mingw的bin目录下面。mysql安装的时候默认的安装路径中有空格,我们得先把它的include和lib目录拷贝到没有空格的路径下,比如C: \mysql下)

cd c:\mysql\lib\opt
reimp -d libmysql.lib
dlltool -k -d libmysql.def -l libmysql.a

如此,这样我们的命令行为(注意qmake和make):

   cd %QTDIR%\src\plugins\sqldrivers\mysql
   qmake -o Makefile "INCLUDEPATH+=C:\MYSQL\INCLUDE" "LIBS+=C:\MYSQL\LIB\OPT\LIBMYSQL.a" mysql.pro
  

如果出现这个,不要紧(保留反斜线字符不提倡使用),继续执行mingw32-make

这下便会在%QTDIR%\plugins\mysql\debug目录下面生成libmysql.a, mysql.dll这两个文件了。

有一点, 就是下载他给出的mingw-utils-0.3.tar.gz 文件, 只需要把里面的 reimp 工具复制到你的 minGW目录下的bin 里就可以了,这样按上面的步骤就可以生成需要的驱动了。 make 结束后, 库文件会生成到qt的系统目录中去。

然后使用mingw32-make release 生成release目录下的文件

 

 

抱歉!评论已关闭.