Windows平台下编译Qt的MySQL数据库驱动

时间:2022-01-04 23:48:38

       先吐个槽,弄了将近一天的时间才弄好,其实大概在一年之前弄个,不过当时没记录下来,导致现在又得再做一遍,可见博客是多么的重要啊!花了这么多时间主要是因为想从源码编译,大家都知道,编译一个Qt源码真心不容易啊,好久不能关电脑!!!好了,吐完了,说正事!

        最近最项目,选择了Qt和MySQL组合。之前一直在linux下做事,可惜这次要求环境是Windows,所以得重新搭建环境。首先安装Qt的开发环境,我直接选择的QtSDK,一个包安装到底就行;MySQL也是官网下载最新安装包安装的。两个部分单独测试过,都已经正常工作了!接下来就需要Qt操作MySQL了,这需要MySQL数据库驱动,QtSDK安装后只是自带了SQLite数据库的驱动,需要自己编译。我选择的编译工具是大名鼎鼎的MinGW,然后需要Qt源码包,我选择的版本是4.7.4。

       接下来就是编译了,感觉无从下手的时候最好就看看Qt的帮助文档,至于怎么使用Qt的帮助文档,可以看看上一篇博文,这里贴一下在帮助文档中搜索到的结果:

Windows平台下编译Qt的MySQL数据库驱动

        这篇帮助文档里面非常详细的介绍了如何编译各种数据库的驱动,我们这里选择在Windows下编译MySQL数据库驱动。

         文档十分详细,基本都是步骤,我就翻译了,直接截图,大家一看就知道:

 

How to build the MySQL driver for MinGW users

The following steps have been used successfully for WinXP SP3. In this example, Qt 4.6.2 is shown.

  • Download the following components:
    • MinGW-5.1.6.exe
    • mingw-utils-0.3.tar.gz
    • Qt sources, e.g. qt-everywhere-opensource-src-4.6.2.zip
    • mysql-5.1.35-win32.msi
  • Install MinGW-5.1.6.exe in, e.g. C:\MinGW.
  • Extract mingw-utils-0.3.tar.gz into, e.g. C:\MinGW.
  • Add the path for MinGW-5.1.6.exe to your PATH variable, e.g. C:\MinGW\bin;
  • Extract the Qt sources, (qt-everywhere-opensource-src-4.6.2.zip), into, e.g. C:\Qt.
  • Add the path for the eventual Qt binary to your PATH variable, e.g. C:\Qt\4.6.2\bin;.
  • Install MySQL (mysql-5.1.35-win32.msi), customizing the components. Select only the headers and libraries. Install in, e.g. C:\MySQL\MySQL51.
  • Open the DOS prompt, go to C:\MySQL\MySQL51\lib\opt, and run the following commands:
    • reimp -d libmysql.lib
    • dlltool -k -d libmysql.def -l libmysql.a
  • Open the DOS prompt, go to C:\Qt\4.6.2 and run the following commands:
    • configure.exe -debug-and-release -platform win32-g++ -qt-sql-mysql -l mysql -I C:\MySQL\MySQL51\include -L C:\MySQL\MySQL51\lib\opt
    • mingw32-make sub-src

    This step takes a long time.

  • Open the DOS prompt, go to C:\Qt\4.6.2\src\plugins\sqldrivers\mysql and run the following command:
    • qmake "INCLUDEPATH+=C:\MySQL\MySQL51\include" "LIBS+=-L. mysql" mysql.pro
  • Now the following libraries are ready in C:\Qt\4.6.2\plugins\sqldrivers.
    • libqsqlmysql4.a
    • libqsqlmysqld4.a
    • qsqlmysql4.dll
    • qsqlmysqld4.dll

    To use the SDK and QtCreator directly, copy these libraries to your C:\Qt\...\qt\plugins\sqldrivers\, and copyC:\MySQL\MySQL51\lib\opt\libmysql.dll to your C:\Qt\...\qt\bin\.

         这里我贴一下自己编译完成后的文件,熟话说:有图有真相,呵呵!

Windows平台下编译Qt的MySQL数据库驱动

          将生成的文件按照帮助文档说的,拷贝到相应的目录下;接下来我们在QtCreator里面写一个程序,测试一下我们的驱动是否可用:

          程序的功能是输出当前系统中Qt包含的数据库驱动;源码如下:

 
 
   
#include <QApplication>#include <QSqlDatabase>#include <QStringList>#include <QDebug>int main(int argc, char* argv[]) {    QApplication app(argc, argv);    qDebug() << "Available drivers:";    QStringList drivers = QSqlDatabase::drivers();    foreach(QString driver, drivers)        qDebug() << "\t" << driver;    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");    qDebug() << "ODBC driver valid?" << db.isValid();}
 
 程序输出结果如下:

Windows平台下编译Qt的MySQL数据库驱动

         由上面输出我们可以看出:Qt自带的SQLite和我们自己编译的MySQL数据库的驱动都可以正常工作了,我们没有编译的ODBC数据库驱动就没有支持!

 

注意:

        为什么这么简单的东西我却花了将近一天的时间呢?这里说一下自己的思路和做法,避免大家走弯路,更让大家熟悉怎么编译Qt模块。

        最初我是直接编译Qt源码,没有利用已安装的Qt工具来模块化编译数据库驱动,这出现了两个问题:

         1、直接编译,花费很长时间才能编译完;若利用configure配置工具驱动一些模块后会编译报错,哎;

         2、这个时候指定MySQL头文件和库文件路劲比较纠结,可能是我对Windows不熟悉了,反正我觉得纠结。

         后来我才准备模块化编译的,这个确实比较简单,一会就弄完了,特别要注意上面要利用MinGW工具对MySQL库文件进行转换。

 

         好了,就到这吧!