看到网上很多人都在求Qt静态编译带Mysql,包括我自己在内也是google了N多资料才搞定,饮水思源,没有网上各位网友的帖子我至今还是懵懵懂懂,所以这里我就整理下,希望对大家有所帮助


使用环境:win10Pro  配置时关闭了杀软,包括win Defender

流程规划:

  1. 下载安装必须组件  qt5.5 perl python mysql  etc.

  2. 安装qt 5等组件Mysql库的转换

  3. 编译安装

  4. 配置

  5. 使用


  • 安装 

  1.  Qt5安装包 这里Mingw版本:

下载地址:http://download.qt.io/official_releases/qt/5.5/5.5.1/qt-opensource-windows-x86-mingw492-5.5.1.exe

 安装过程很简单,有一点是安装的时候把source勾选上就好。wKioL1cVr8mAun1eAAA-zSYUCxk548.png

  • 编译器配置



 2. 然后是Perl和Python的安装:

地址:http://downloads.activestate.com/ActivePerl/releases/5.20.1.2000/ActivePerl-5.20.1.2000-MSWin32-x64-298557.msi

https://www.python.org/ftp/python/3.4.4/python-3.4.4.msi  

把Python的环境变量(Path)添加好C:\Python27;Perl正常会自动添加,如果没有手动添加环境变量

 3. MySql安装:注意mysql安装不要有空格或中文,因为Qt编译时会出问题

我这里选择安装到D:\Mysql https://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.49-win32.msi 

最后下载两个转换工具reimp和dlltool https://yunpan.cn/cPgMhxUAI29Mm  访问密码 3e31下载后把其放到d:\mysql\lib目录中


  • 编译&准备:

  首先进行Mysql库文件转换,因为Mingw是Linux格式库,而Mysql里的是Windows格式库。

从开始菜单打开 Qt 5.5 for Desktop命令行

wKioL1cVtWfxrG8AAACxzaJ-9Nw254.png

wKioL1cVtWeQkIH9AAAoXORGpsA029.png

首先切换到Mysql目录:

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

wKiom1cVtwGRQRIEAAApNKnZ4QI946.png

然后如上操作进行转换,转换完成后会生成所需文件libmysql.def  libmysql.a  etc.


切换到源码目录

然后进行ConfigurewKioL1cVuTSy5TTrAAA2zI6wZVM984.png

配置:

Configure.bat -confirm-license -opensource -platform win32-g++ -mp -release -static -prefix "c:\Qt\5.5_static" -qt-sql-mysql -l mysql -I d:\Mysql\include -L d:\Mysql\lib -qt-sql-sqlite -qt-zlib -qt-libpng -qt-libjpeg -opengl desktop -qt-freetype -no-qml-debug -no-angle -nomake tests -nomake examples -skip qtwebkit -skip qtwebengine

wKiom1cVu63hidV0AABCOzSFigM063.png

编译:

 mingw32-make -s

wKioL1cVvRKimi-wAAAPfeN_a9M605.png

这里是单线程不提示,没办法电脑配置不行所以单线程及不输出,好像这样会快很多  等吧  等吧。。。。。

安装:

mingw32-make install


  • 添加Qt版本: 

 打开Qt Creator -> 工具 -> 选项 -> 构件和运行 -> Qt Versions

wKiom1cVwmryKGvJAAA8e9e_Ae8861.png

   设置构建套件:

    wKioL1cVwxqxg5prAADxvhSJtoc679.png

打开C:\Qt\5.5_static\mkspecs\win32-g++文件夹编辑qmake.conf

找到 QMAKE_LFLAGS 和 QMAKE_LFLAGS_DLL 然后将后面都改成 -static  这样静态编译后生成的文件就不需要动态依赖库了

wKioL1cVu_rDnM2iAAArozj-Xc0935.png

  • 测试

没什么问题 这个时候就编译完成了  大家可以测试下是否Mysql静态编译成功

运行前把libmysql.dll放到项目生成文件夹下或windows system32里

//.pro 文件里添加QT+=sql
#include <QtCore/QCoreApplication>
#include <QtSQL>
 
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    qDebug() << QSqlDatabase::drivers();
    return a.exec();
}

大功告成。。。

附:静态编译文件带Mysql下载地址https://yunpan.cn/cPsyJpMryWAn8  访问密码 69ec