QT5.14.2+MSVC2017(32位/64位)+MySQL连接

617 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第2天,点击查看活动详情

前言

首先确认你当前安装MySQL服务器是32位还是64位的,MySQL版本位数需要与QT编译环境对应。

我分别安装了32位及64位的MySQL服务器,接下来主要介绍了QT5.14.2在MSVC2017(32位/64位)编译环境下进行mysql源码的编译,以及如何对其进行配置来实现MySQL服务器的连接。

编译环境: QT:5.14.2 编译器:MingW_32/64_bit MSVC_32/64_bit MySQL:5.7_32位 8.0_64位

一、编译Qt源码生成MySQL驱动

1.进入自己安装Qt时所放路径,找到mysql.pro(比如我的文件保存目录:“D:\QT_5.14\install\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql ”),双击mysql.pro; 1.png

2.这边可以根据你想要的编译环境进行编译,进行相应的勾选后,点击Configure Project; 2.png

3.打开mysql.pro 对代码进行相应的修改,需要注意我的代码中的注释处,修改完成后选好自己需要的编译环境(也就是构建套件,可以看到这里我用的是MSVC2017 32bit,所以代码中MySQL的include及lib文件也是32位服务器所在,64位的那些代码使用#符号进行了屏蔽,如果需要使用64位的,打开相应代码并将32位的那些代码屏蔽,自己注意区分),点击左下角锤子进行编译; 4.png

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)

#MySQL32位服务器对应QT的32位编译器
INCLUDEPATH+="C:/Program Files (x86)/MySQL/MySQL Server 5.7/include"           #MySQL服务器的include目录
LIBS+="C:/Program Files (x86)/MySQL/MySQL Server 5.7/lib/libmysql.lib"           #MySQL服务器的libmysql.lib文件路径
DESTDIR = "D:/QT_5.14/install/5.14.2/Src/qtbase/src/plugins/sqldrivers/plugins/sqldrivers/msvc32"   #自定义保存驱动的文件夹

#MySQL64位服务器对应QT的64位编译器
#INCLUDEPATH+="C:/Program Files/MySQL/MySQL Server 8.0/include"
#LIBS+="C:/Program Files/MySQL/MySQL Server 8.0/lib/libmysql.lib"
#DESTDIR = "D:/QT_5.14/install/5.14.2/Src/qtbase/src/plugins/sqldrivers/plugins/sqldrivers/msvc64"

4.如果出现如下报错,就按照第二步的方法进行修改,否则可直接进行第三步; 5.png

二、报错解决

1.如果报错是如上图所示:"C1083:无法打开包括文件main.moc...",进入你的mysql.pro的同级目录下"...\mysql.moc\debug",复制该文件; 6.png

2.如图所示,粘贴至mysql.pro的同级目录下,之后回到QtCreator重新进行编译; 7.png

三、进行配置

1.如果编译成功,可以看到在指定目录下有生成以下文件; 这里是MSVC环境编译出来的,如果是MingW环境,见第四步补充说明; 8.png

2.将其中的qsqlmysql.dll和qsqlmysqld.dll文件拷贝到MSVC32位编译器的"D:\QT_5.14\install\5.14.2\msvc2017\plugins\sqldrivers"文件夹内; 9.png

3.进入到安装的MySQL服务器的bin目录(比如我的"C:\Program Files (x86)\MySQL\MySQL Server 5.7\lib"); 11.png

4.将其中的libmysql.dll文件拷贝到MSVC32位编译器的"D:\QT_5.14\install\5.14.2\msvc2017\bin"文件夹内; 12.png

四、补充说明

1.上述中的路径都是我根据自己电脑上Qt和MySQL安装路径来写的,读者进行编译时,应根据自己电脑上的安装路径作适当修改。 2.一定要根据你当前安装的MySQL服务器的位数来进行相应的配置,32位的MySQL对应着QT的MingW_32及MSVC_32编译环境,64位的同理; 3.MingW环境编译成功生成文件如下,这样也只需将qsqlmysql.dll文件拷贝到MingW32位编译器的"D:\QT_5.14\install\5.14.2\mingw73_32\plugins\sqldrivers"文件夹内; 14.png

13.png

总结:自己编译生成的驱动(MingW:qsqlmysql.dll MSCV:qsqlmysql.dll&qsqlmysqld.dll)最终需要放到对应编译环境的"...\plugins\sqldrivers"文件夹内;MySQL服务器"...\lib"文件夹内的libmysql.dll文件需要放到对应编译环境的"...\bin"文件夹内,同时一定要位数对应。 这里有我编译好的驱动,需要的话自取: 15.png

百度网盘链接:pan.baidu.com/s/1dhYwWkZo… 提取码:xxcj


提示: 共同学习,共同进步,如果还有相关问题,可在评论区留言进行讨论。

参考博客:Qt5.14.1下编译MYSQL驱动(msvc,mingw)