您的位置:首页 > 编程语言 > Qt开发

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

2013-10-08 20:48 218 查看
重拾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的警告,然后是在做简单的配置,如下图



图 1
然后配置make的路径



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



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

步骤二,准备工作

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



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



图 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的这四个文件。如下图



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



图 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

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




make



可能会出现这样的错误:



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

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



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



图 Debug



图 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



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

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



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



图 10
至此,所有工作结束。





最后附上我参考的网站:

/article/2333923.html

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

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

http://mobile.51cto.com/symbian-268032.htm
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: