折腾了快小一个月,参考了好多大神们的笔记,不停尝试后问题终于解决了(So Sad),赶紧写篇文记录一下,以免自己忘记。
下载链接:https://download.qt.io/archive/qt/5.12/5.12.9/
安装步骤参考:https://blog.csdn.net/xiaowangyanjiu/article/details/123787604
注意:在步骤“Select Components”时一定勾选上“Sources”。
如果已经安装了Qt,但是没有已安装版本的Qt源码,可在官网上下载对应版本的源码,下载地址为:https://download.qt.io/archive/qt/5.12/5.12.9/single/
安装步骤参考:https://blog.csdn.net/weixin_43493507/article/details/130125008
进入“ActiveState”主页(https://www.activestate.com/),选择“PRODUCT”->“Python”,在显示界面中选择“Windows”下的“Downloa Python 3.10”,并对下载工程进行配置(可直接默认配置),如下图:
界面划至底部,点击“Download & Install Python”,在弹出的界面内选择“Install via Command Prompt(cmd.exe)”,再点击“Copy to Clipboard”,如下图:
同时点击“Win”+“R”,或搜索“运行”,在对话框内输入“cmd”,运行管理员命令行。在命令行内右击复制上一步的命令,点击回车进行python的下载安装。安装安装完成后在命令行内输入“python -v”,如输出python版本信息则python安装成功。
官网下载地址:https://rubyinstaller.org/downloads/下载相应版本安装即可。
(不知道是否需要,但Qt官网上写着需要安装,就安装上了)
安装步骤参考https://blog.csdn.net/theLostLamb/article/details/78797643
注意安装版本选择32bit的
首先创建静态库的安装文件夹,我选择安装在Qt的安装路径下(D:\Qt\Qt5.12.9\5.12.9\mingw73_32_static)。注意该路径不能有中文字符
打开Qt MinGW 32bit命令行窗口,如下图:
执行cd指令进入Qt源码的存放目录下,执行如下配置命令:
configure.bat -confirm-license -opensource -optimize-size -platform win32-g++ -debug-and-release -static -static-runtime -prefix "D:\Qt\Qt5.12.9\5.12.9\mingw73_32_static" -no-openssl -sql-sqlite -qt-zlib -qt-libpng -qt-libjpeg -opengl desktop -qt-freetype -qt-pcre -qt-harfbuzz -no-qml-debug -no-angle -nomake tests -nomake examples -skip wayland -skip qtwebengine -recheck-all
configure的选项配置具体含义可通过执行configure.bat -help
进行查看,并根据实际需要更改配置选项。
注意-prefix后的路径需要更改成上述你需要安装的路径。
configure完成后执行如下命令:
ming32-make -j12
(-j后的数字表示并行任务数量,该数量可与你所用电脑的cpu核数一致,用来加快编译效率)
编译成功后执行如下命令:
mingw32-make -j12 install
安装完成后在你所选的安装路径下就完成有了Qt的静态编译库,目录结构如下所示:
注意:该静态库是不包含MySQL驱动的
运行QtCreator,选择“工具”-》“选项”,在弹出的界面内先选择“Kits”-》“Qt Version”,选择“手动设置”-》“添加”,选择静态库内的qmake.exe后确认,如图:
切换至“Kits”,添加手动设置,如图:
点击“OK”后,即可在QtCreator内使用Qt静态库对程序进行编译和发布了。
使用Qt静态编译得到的exe文件可以发布使用。
首先,将MySQL安装路径下的库文件libmysql.dll和libmysql.lib拷贝至Qt静态编译库的bin文件夹下,如下图:
找到Qt源码内mysql驱动编译的源程序工程,我的路径为:
D:\Qt\qt-everywhere-src-5.12.9\qtbase\src\plugins\sqldrivers\mysql
使用QtCreator打开mysql.pro,编译器可使用已配置的静态编译器或者使用系统的mingw32。
注意编译路径一点要配置成与上述的工程路径一致,即D:\Qt\qt-everywhere-src-5.12.9\qtbase\src\plugins\sqldrivers\mysql,否则会出现编译出错情况。
第二步,更改mysql.pro:
TARGET = qsqlmysql
HEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp
#QMAKE_USE += mysql
OTHER_FILES += mysql.json
PLUGIN_CLASS_NAME = QMYSQLDriverPlugin
include(../qsqldriverbase.pri)
LIBS += "C:\Program Files (x86)\MySQL\MySQL Server 5.7\lib\libmysql.lib"
INCLUDEPATH += "C:\Program Files (x86)\MySQL\MySQL Server 5.7\include"
如果使用系统mingw32进行编译的话,需在mysql.pro中多增加一条
CONFIG += static
第三步,更改qsqldriverbase.pri文件:
QT = core core-private sql-private
# For QMAKE_USE in the parent projects.
#include($$shadowed($$PWD)/qtsqldrivers-config.pri)
include(./configure.pri)
PLUGIN_TYPE = sqldrivers
load(qt_plugin)
DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII
执行程序编译后,可生成如下文件:
第四步,更改qsqlmysql.prl:
QMAKE_PRL_LIBS = "C:\\Program Files (x86)\\MySQL\\MySQL Server 5.7\\lib\\libmysql.lib" $$[QT_INSTALL_LIBS]/libQt5Sql.a $$[QT_INSTALL_LIBS]/libQt5Core.a -lmpr -lnetapi32 -luserenv -lversion -lws2_32 -lkernel32 -luser32 -lshell32 -luuid -lole32 -ladvapi32 -lwinmm $$[QT_INSTALL_LIBS]/libqtpcre2.a
第五步,更改qsqlmysqld.prl:
QMAKE_PRL_LIBS = "C:\\Program Files (x86)\\MySQL\\MySQL Server 5.7\\lib\\libmysql.lib" $$[QT_INSTALL_LIBS]/libQt5Sqld.a $$[QT_INSTALL_LIBS]/libQt5Cored.a -lmpr -lnetapi32 -luserenv -lversion -lws2_32 -lkernel32 -luser32 -lshell32 -luuid -lole32 -ladvapi32 -lwinmm $$[QT_INSTALL_LIBS]/libqtpcre2d.a
第六步,将生成的四个文件拷贝至此前编译的Qt静态库的plugins\sqldrivers路径下。如果当前QtCreator正在工作,请关闭重启QtCreator。
在需要使用mysql的Qt程序工程的pro文件中加入如下语句:
QT += sql
QTPLUGIN += qsqlmysql
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../Qt/Qt5.12.9/5.12.9/mingw73_32_static/plugins/sqldrivers/ -lqsqlmysql
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../Qt/Qt5.12.9/5.12.9/mingw73_32_static/plugins/sqldrivers/ -lqsqlmysqld
在使用时添加引用声明语句:
#include
#include
Q_IMPORT_PLUGIN(QMYSQLDriverPlugin)
注意:使用MySQL的Qt程序在发布时需要连同libmysql.dll一起发布。
Qt5.12.9的MinGW32-bit的静态库下载地址:https://download.csdn.net/download/weixin_43493507/87766856?spm=1001.2014.3001.5503