qt4.7 mysql库_Qt4.7.3 编译MYSQL5数据库驱动--回顾

重拾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\bin和E:\Qt\qtcreator-2.2.0\mingw\mingw32\bin添加到环境变量。(我是安装在E盘)

步骤一,安装QT和Mysql

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

0818b9ca8b590ca3270a3433284dd417.png

图1

然后配置make的路径

0818b9ca8b590ca3270a3433284dd417.png

图2

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

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

步骤二,准备工作

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

0818b9ca8b590ca3270a3433284dd417.png

图3

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

0818b9ca8b590ca3270a3433284dd417.png

图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,把它拷贝到mingw的bin目录下(这个刚才我们也添加到环境变量了,可以直接应用)

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

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

0818b9ca8b590ca3270a3433284dd417.png

图5

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

0818b9ca8b590ca3270a3433284dd417.png

图6

步骤三,编译:

开始编译,首先是生成数据库的库文件libmysql.def和libmysql.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

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

0818b9ca8b590ca3270a3433284dd417.png

make

可能会出现这样的错误:

0818b9ca8b590ca3270a3433284dd417.png

图7

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

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

0818b9ca8b590ca3270a3433284dd417.png

图8

在Debug和Release文件夹里面分别有:

0818b9ca8b590ca3270a3433284dd417.png

图Debug

0818b9ca8b590ca3270a3433284dd417.png

图Release

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

qsqlmysql4.dll

libqsqlmysql4.a

qsqlmysqld4.dll

libqsqlmysqld4.a

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

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

#include

#include

#include

#include

#include

int main(int argc, char *argv[])

{

QCoreApplication a(argc, argv);

qDebug()<

QStringList drivers = QSqlDatabase::drivers();

foreach(QString driver,drivers)

qDebug()<

return a.exec();

}

在工程文件中添加

QT+=sql

注意在,运行结果还是现实只有sqlite和odbc,

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

0818b9ca8b590ca3270a3433284dd417.png

图9

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

0818b9ca8b590ca3270a3433284dd417.png

图10

至此,所有工作结束。

最后附上我参考的网站:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值