Qt4.7.3 编译MYSQL5数据库驱动--回顾

时间:2021-04-03 04:54:39

重拾Qt,采用

qt-win-opensource-4.7.3-mingw

这个版本,采用mingw编译器

Qt助手中搜索SQL Database Driver关键词,里面写了详细的编译不同数据库驱动的方法,只是都是英文的,有不明白的地方,今天终于一中午搞定。

我是安装了qt-win-opensource-4.7.3-mingw这个C++的框架,然后安装Creator2.2

这里最好是简单的配置一下,需要把环境变量配置好,要不然在后面的配置遇到很多麻烦。

首先是make命令,这个是在E:\Qt\4.7.3\bin这个目录,再就是,安装需要mingw的一些命令,把E:\Qt\qtcreator-2.2.0\mingw\binE:\Qt\qtcreator-2.2.0\mingw\mingw32\bin添加到环境变量。(我是安装在E盘)

步骤一,安装QTMysql

        以前是库和Creator是在一起的,所以没有这些问题,最近今年都是分开的,而且产品也很细化,分为各种版本,我是用的一个比较通用的,最好是先安装Creator然后在安装库,因为在安装库的时候出现寻找mingw的警告,然后是在做简单的配置,如下图

Qt4.7.3 编译MYSQL5数据库驱动--回顾

1

然后配置make的路径

Qt4.7.3 编译MYSQL5数据库驱动--回顾

2

另外,也可在选项配置一些环境问题。

 

接下来安装Mysql,这个没什么问题,记住密码,记住选项中选择developer mechine,不要选择server

步骤二,准备工作

mysql目录文件拷贝到根目录中,因为在Mysql的安装目录的路径中有空格

Qt4.7.3 编译MYSQL5数据库驱动--回顾

3

把下面的几个文件夹拷到这个文件夹

Qt4.7.3 编译MYSQL5数据库驱动--回顾

4

另外就是添加环境变量,把刚才的几个目录添加到环境变量。

再就是注意到,在文档中 “How to Build the QMYSQL Plugin on Windows

”下面有这样的一段,要认真读一下;

“How to build the MySQL driver for MinGW users“

引用别人的一段解释:

如果使用的是msvc的编译器,那上面是没问题的,但是如果使用的是mingw编译器,那就会出错,有undefined reference....等类错误字样。这是因为mingw使用的库和msvc使用的不同格式的库而引起的。而mysql只提供了msvc可使用的库。 qt4 for mingw要想编译出qsqlmysql库来,我们先得编译出mingw需要的libmysql.a这个文件来,可使用mingw工具来生成。

 

在文档中也提及了,需要下载mingw-utils-0.3.tar.gz,还要安装mingw编译器,文档中说的是Qt4.6.2,那个还是库跟Creator是一个安装文件,现在这个Creator里面自带了一个Mingw,就不用管它了,其实只需要mingw-utils-0.3.tar.gz这个里面的一个文件:reimp,把它拷贝到mingwbin目录下(这个刚才我们也添加到环境变量了,可以直接应用)

 

下面顺便说一下我们要编译成什么东西

E:\Qt\4.7.3\plugins\sqldrivers,是已经编译好的数据库驱动,一般只有两个数据库的sqlite还有odbc,每种数据库有四个文件,每两个代表debugrelease版本的,我们就是要生成Mysql的这四个文件。如下图

Qt4.7.3 编译MYSQL5数据库驱动--回顾

5

Qt为我们提供了这个驱动的源文件,其实我们只是按照说明自己编译一下,源文件在E:\Qt\4.7.3\src\plugins\sqldrivers\mysql,编译结束如下图:

Qt4.7.3 编译MYSQL5数据库驱动--回顾

6

步骤三,编译:

开始编译,首先是生成数据库的库文件libmysql.deflibmysql.a

代码:

 

cd c:\mysql\lib

reimp -d libmysql.lib

dlltool -k -d libmysql.def -l libmysql.a


然后,用记事本打开E:\Qt\4.7.3\src\plugins\sqldrivers\mysql下的mysql.pro文件,添加一下内容:

 

INCLUDEPATH+=”C:\MYSQL\INCLUDE"

LIBS+=”C:\MYSQL\LIB\LIBMYSQL.a”

 

注意英文字符

cd E:\Qt\4.7.3\src\plugins\sqldrivers\mysql

 

qmake -o Makefile mysql.pro

出现以下警告,可以略过!

 Qt4.7.3 编译MYSQL5数据库驱动--回顾

make

 

可能会出现这样的错误:

Qt4.7.3 编译MYSQL5数据库驱动--回顾

7

E:\Qt\4.7.3\src\plugins\sqldrivers\mysql,用本打开Makefile.debug文件,去掉-llibmysql这一项,然后继续make

这样在Debug目录中就会找到编译成功的两个文件,然后使用命令:make release,可能也会出现上面的错误,同样,用记事本打开Makefile.release文件,去掉-llibmysql这一项,继续make release,最后的结果是

Qt4.7.3 编译MYSQL5数据库驱动--回顾

8

DebugRelease文件夹里面分别有:

Qt4.7.3 编译MYSQL5数据库驱动--回顾

Debug

Qt4.7.3 编译MYSQL5数据库驱动--回顾

Release

至此,需要编译的文件都编译完了,下面就是配置一下。

qsqlmysql4.dll

libqsqlmysql4.a

qsqlmysqld4.dll

libqsqlmysqld4.a

把这四个文件放在目录:E:\Qt\4.7.3\plugins\sqldrivers

 

下面通过Qt Creator新建一个测试程序,

 

#include <QtCore/QCoreApplication>
#include <QDebug>
#include <QStringList>
#include <QString>
#include <QSqlDatabase>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
qDebug()<<"Available drivers:";
QStringList drivers = QSqlDatabase::drivers();
foreach(QString driver,drivers)
qDebug()<<"\t"<<driver;
return a.exec();
}


 

在工程文件中添加

QT      +=sql

 

注意在,运行结果还是现实只有sqliteodbc

在文档最后一句话,需要把mysqllibmysql.dll拷贝到Qtbin目录下,或者添加环境变量

Qt4.7.3 编译MYSQL5数据库驱动--回顾

9

然后,再运行程序,就会发现:

Qt4.7.3 编译MYSQL5数据库驱动--回顾

10

至此,所有工作结束。

 

 

最后附上我参考的网站:

http://blog.csdn.net/qust_waiwai/article/details/6527276

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

http://hi.baidu.com/jiuyouxiaoguai/item/18537226d3709bcdef10f127

http://mobile.51cto.com/symbian-268032.htm