接收了别人的代码,相关工程是用QT5.9开发的,因为有些dll第三方提供的时候是x86 32位版本,后续因为要在QT中通过QtWebEngine组件加载H5页面,相关语法要求对应的QtWebEngine浏览器内核得在80以上,所以就将整个Qt工程升级到了QT5.15.2 64位版本。结果,升级后MySQL驱动即最终可执行程序目录sqldrivers\qsqlmysql.dll 文件不匹配,导致数据库连接失败。
因此,小菜鸟拾起多用不用的少得可怜的C++技能和QT技能开始尝试编译QT源码中的MySQL驱动。主要几个步骤如下:
1.QT源码中MySQL驱动工程改造
2.在Visual Studio2022中引用MySQL8.x安装目录中的库文件和.lib文件
1.QT源码中MySQL驱动工程改造
1.1MySQL驱动源码工程文件查找
我个人QT安装目录如下:

1.2修改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
WIN32:
INCLUDEPATH += C:/Program Files/MySQL/MySQL Server 8.0/include
LIBS += -LC:/Program Files/MySQL/MySQL Server 8.0/lib -llibmysql
DEPENDPATH += C:/Program Files/MySQL/MySQL Server 8.0/include
PLUGIN_CLASS_NAME = QMYSQLDriverPlugin
include(../qsqldriverbase.pri)
注意:
(1)注释QMAKE_USE += mysql
(2)指定MySQL安装目录下的include、lib目录(根据自己实际情况设置对应的目录)
(3)低版本MySQL在mysql.pro文件中 LIBS 使用
LIBS += -LC:/Program Files/MySQL/MySQL Server 8.0/lib -llibmysql
(4)MySQL8.x版本的数据库在mysql.pro文件中LIBS使用
LIBS += -LC:/Program Files/MySQL/MySQL Server 8.0/lib -lmysqlclient
2.在Visual Studio2022中引用MySQL8.x安装目录中的库文件和.lib文件
有时候因为兼容性问题,在.pro工程文件中修改相关include和lib目录后使用VS 下的Qt tool 插件加载 ,对应的目录编译时提示找不到某些.h头文件,因此粗暴的将对应目录加到vc项目属性中

将要引用的lib文件也加到项目中,有时候“附加依赖项”中会出现以下目录,编译时提示找不到文件或者目录,将其删除。只添加mysqlclient.lib文件即可。

最后选择x64编译即可。
1148

被折叠的 条评论
为什么被折叠?



