看到网上很多人都在求Qt静态编译带Mysql,包括我自己在内也是google了N多资料才搞定,正所谓滴水之恩当涌泉相报,没有网上各位网友的帖子我至今还是懵懵懂懂,所以这里我就整理下,希望对大家有所帮助
使用环境:win10Pro 配置时关闭了杀软,包括win Defender
流程规划:
- 下载安装必须组件 qt5.5 perl python mysql etc.
- 安装qt 5等组件Mysql库的转换
- 编译安装
- 配置
- 使用
- 安装
- Qt5安装包 这里Mingw版本:
下载地址:http://download.qt.io/official_releases/qt/5.5/5.5.1/qt-opensource-windows-x86-mingw492-5.5.1.exe
安装过程很简单,有一点是安装的时候把source勾选上就好。
- 编译器配置:
打开C:\Qt\Qt5.5.0\5.5\mingw492_32\mkspecs\win32-g++文件夹编辑qmake.conf
找到 QMAKE_LFLAGS 和 QMAKE_LFLAGS_DLL 然后将后面都改成 -static 这样静态编译后生成的文件就不需要动态依赖库了
2. 然后是Perl和Python的安装:
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命令行
首先切换到Mysql目录:
reimp -d libmysql.lib dlltool -k -d libmysql.def -l libmysql.a
然后如上操作进行转换,转换完成后会生成所需文件libmysql.def libmysql.a etc.
切换到源码目录
然后进行Configure
配置:
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
编译:
mingw32-make -s
这里是单线程不提示,没办法电脑配置不行所以单线程及不输出,好像这样会快很多 等吧 等吧。。。。。
安装:
mingw32-make install
- 添加Qt版本:
打开Qt Creator -> 工具 -> 选项 -> 构件和运行 -> Qt Versions
设置构建套件:
- 测试
没什么问题 这个时候就编译完成了 大家可以测试下是否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(); }
大功告成。。。