Qt 编译MySQL数据库驱动——MSVC版本

  • Post author:
  • Post category:mysql


1.环境:

MySQL:8.0(C:\Program Files\MySQL\MySQL Server 8.0)、VS2017(社区版,D:\Microsoft Visual Studio\2017)、Qt5.14.2,使用MSVC64位(D:\Qt\Qt5.14.2\5.14.2\msvc2017_64)

2.步骤

2.1 在环境变量PATH中添加


D:\Qt\Qt5.14.2\5.14.2\msvc2017_64\bin

,如果后面2.3步骤中报错


Project ERROR: Cannot run compiler 'cl'. Output:


再添加一个

D:\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64

注意这里是64位版本的,32位的路径要改一下,这里是要用到该路径下的cl.exe文件


2.2 修改

D:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql下的mysql.pro文件的内容(Src文件夹是Qt安装时选择的组件“Source”的安装目录,如果没有,则需要给Qt添加组件),修改后内容如下

TARGET = qsqlmysql

HEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp

#QMAKE_USE += mysql

INCLUDEPATH+="C:/Program Files/MySQL/MySQL Server 8.0/include"
LIBS+="C:/Program Files/MySQL/MySQL Server 8.0/lib/libmysql.lib"

OTHER_FILES += mysql.json

PLUGIN_CLASS_NAME = QMYSQLDriverPlugin
include(../qsqldriverbase.pri)

2.3.  打开

,依次执行

cd D:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql
qmake "INCLUDEPATH+=C:/Program Files/MySQL/MySQL Server 8.0/include" "LIBS+=C:/Program Files/MySQL/MySQL Server 8.0/lib/libmysql.lib" mysql.pro

这里可能会出现  无法找到文件.pri,can’t read xxx等的问题,忽略。

再打开

,依次执行

cd D:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql
qmake -- MYSQL_INCDIR="C:/Program Files/MySQL/MySQL Server 8.0/include"    MYSQL_LIBDIR="C:/Program Files/MySQL/MySQL Server 8.0/lib/libmysql.lib"
nmake

此时会生成很多行代码,比如正在生成代码…正在创建库…,大概半分钟就ok了。

2.4.  在

D:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\plugins\sqldrivers

文件下会生成几个文件

将qsqlmysql.dll、qsqlmysqld.dll拷贝D:\Qt\Qt5.14.2\5.14.2\msvc2017_64\plugins\sqldrivers目录下。将C:\Program Files\MySQL\MySQL Server 8.0\lib下的 libmysql.dll 拷贝到D:\Qt\Qt5.14.2\5.14.2\msvc2017_64\bin目录中

在Qt程序中添加如下代码,查看可用数据库驱动是否有MySQL,如果有,则控制台输出

“QMYSQL”

“QMYSQL3”

QStringList drivers = QSqlDatabase::drivers();
foreach(QString driver, drivers)
    qDebug() << driver;



版权声明:本文为LclLsh原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。