解析Qt 4.7.3编译MYsql驱动

移动开发
Qt 4.7.3在连接MYsql数据库的时候可能出现的问题,原来是其他由于权限的问题,只给出了部分数据库的驱动(只有sqlite)其他的驱动只给出了源文件还有文档说明,需要自己编译,那么本文将会帮你解决这些问题。

本文讲解Qt 4.7.3编译MYsql驱动的内容,Qt 4.7.3在连接MYsql数据库的时候可能出现的问题,原来是其他由于权限的问题,只给出了部分数据库的驱动(只有sqlite)其他的驱动只给出了源文件还有文档说明,需要自己编译,那么本文将会帮你解决这些问题。

首先,这样的教程在网上有很多,我选了一下比较好的贴出来网址,但是根据自己的情况不同可能会遇到很多问题。。。但是大同小异,基本上都可以解决:

http://blog.knowsky.com/201556.htm

http://blog.knowsky.com/201556.htm

http://no001.blog.51cto.com/1142339/300920

http://www.blogjava.net/nokiaguy/archive/2009/03/23/261502.html

http://www.blogjava.net/nokiaguy/archive/2009/03/23/261502.html

http://no001.blog.51cto.com/1142339/300920

http://www.blogjava.net/javabloger/archive/2008/07/14/214740.html

http://space.itpub.net/22893636/viewspace-663033

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

闲话少说:解决问题首先是要下载安装MYsql还有QT,这个不用多说了,接触过的都熟悉了,PS(以前下载的时候都是SDK集成的开发环境,但是,最近我下载的时候发现不一样了,SDK把不需要的塞班也加进去了,开发包很大1.5G,安装需要9G的空间)没办法我只能下载的

  1. qt-creator-win-opensource-2.2.0  
  2. qt-win-opensource-4.7.3-mingw  

安装的时候可能会遇到点错误,上面给出的网址中有解决的遮掩问题的,哈哈,放心吧。然后就是MYsql,我安装的是5.5,一个比较新的版本,下载网址是:

http://www.mysql.com

安装的时候最好就一次安装好,不然就悲剧了,这个很难被卸载。。。

然后就是编译mysql驱动了:打开Qt Command Prompt。你会发现,你的环境变量他自己给你设定了,这样的话,就需要在你的编译驱动之前就修改这些环境变量,不然的话会在编译的时候遇到各种“不是命令或者内部文件”的问题首先打开qt-win-opensource-4.7.3-mingw安装目录下面的bin目录找到Qt Command Prompt的批处理文件,然后编辑他的环境变量的部分“PATH”记住有两处需要修改,然后就是具体的操作了(派出了各种问题的隐患)

引用:

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目录里的reimp内容拷贝到 mingw的bin目录下面。

mysql安装的时候默认的安装路径中有空格,我们得先把它的include和lib目录拷贝到没有空格的路径下,比如C: \mysql下)

CODE: cd c:\mysql\lib\opt reimp -d libmysql.lib dlltool -k -d libmysql.def -l libmysql.a 这时候你会发现你的lib文件夹下面会多出两文件: libmysql.a & libmysql.def (推荐使用mysql5.5,其他的貌似没有libmysql*.lib文件)

然后使用qmake和make命令:

cd %QTDIR%\src\plugins\sqldrivers\mysql qmake -o Makefile "INCLUDEPATH+=C:\MYSQL\INCLUDE" "LIBS+=C:\MYSQL\LIB\OPT\LIBMYSQL.a" mysql.pro make 这下便会在%QTDIR%\plugins\sqldrivers目录下面生成libqsqlmysql.a, qsqlmysql.dll这两个文件了。

注意这里可能会遇到这种问题:

  1. WARNING: (internal):1: Unescaped backslashes are deprecated.   
  2. WARNING: (internal):1: Unescaped backslashes are deprecated.   
  3. WARNING: (internal):1: Unescaped backslashes are deprecated.  

我也遇到了你的这个问题,我把我的解决方法给你,希望对你有用。

(1)dos下进入:D:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql>

(2)用记事本打开D:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql\ mysql.pro文件,在第二行加入: INCLUDEPATH += "C:\Program Files\MySQL\MySQL Server 5.1\include" LIBS += "C:\Program Files\MySQL\MySQL Server 5.1\lib\opt\libmysql.lib" 并保存

(3)在dos下输入:

qmake -o Makefile mysql.pro 此时可能也会提示:

  1. WARNING:   
  2. d:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql\mysql.pro:2: Unescaped ba ckslashes are deprecated. WARNING:   
  3. d:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql\mysql.pro:2: Unescaped ba ckslashes are deprecated. WARNING:   
  4. d:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql\mysql.pro:2: Unescaped ba ckslashes are deprecated

但是好像对最后的结果没有影响

然后使用make命令;

但是这时候只有在debug文件夹有两个文件

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

  1. qsqlmysql4.dll   
  2. libqsqlmysql4.a  
  3. qsqlmysqld4.dll   
  4. libqsqlmysqld4.a  

这时候把这几个文件拷贝到 C:\Qt\……\plugins\sqldrivers下面;另外,根据文档所说的,还要把libmysql.dll复制到system32目录。

小结:关于Qt 4.7.3编译MYsql驱动的内容将讲到这里,希望能够帮助到你!

【编辑推荐】

C++连接mysql数据库的两种方法

如何安全的远程使用MySQL GUI工具

MySQL数据库中缓存管理的思路解析

MySQL中创建及优化索引组织结构的思路

轻松八句话 教会你完全搞定MySQL数据库

责任编辑:zhaolei 来源: 互联网
相关推荐

2011-07-05 09:25:05

Qt MySQL 驱动

2011-07-05 14:16:50

QT Mysql 驱动

2011-07-05 13:32:45

QT Mysql 驱动

2011-07-05 14:29:44

Ubuntu QT Mysql

2011-06-09 15:18:07

QT 编译

2011-06-08 15:27:24

QT QT 4.5 编译

2011-06-24 17:05:07

QT QT 4.7.3 windows

2011-07-05 14:23:07

QT MySQL 驱动

2011-06-28 13:02:06

Qt Qt 4.7.3 ARM

2011-06-09 14:56:53

QT 编译

2011-06-28 13:47:37

Embedded QT ARM

2010-06-01 14:51:45

MySQL驱动

2011-07-05 14:06:17

编译 Qt

2011-07-05 13:44:17

2011-06-10 10:00:16

Qt 数据库 MySQL

2011-06-21 16:51:21

Qt 静态 编译

2011-04-11 13:26:25

Linux驱动

2011-06-24 13:38:32

QT 编译 安装

2011-06-09 16:47:56

Qt 嵌入式

2011-09-09 17:59:26

QT Widget
点赞
收藏

51CTO技术栈公众号