Qt5.14.2 编译MySQL驱动 (MINGW VS2017) Driver not load Driver not load问题,略详细

Qt5.14.2 编译MySQL驱动 (MINGW VS2017)

Qt编译MySQL驱动的文章实在太多,之前参考了很多文章进行编译(mingw),很幸运搞定了,之后就没管了,前两天遇到一个项目使用vs编译器,结果没搞好,最后还是选择重装,那么问题来了,卸载后再搞搞不定了,为此写下本篇文档详细记录

使用QT如何编译MySQL

MinGW32位、MinGW64位、VS2017_32位、VS2017_64位

因sql驱动导致的Dirver not load 彻底解决!!!

本人水平有限,若描述存在问题,希望得到各位读者的指正


前情提要

进行以下操作时,QT与MySQL已安装完成 ,Qt安装是需要安装source,不然就超出这篇文章得范围了,下面的就不需要在看了
参考我的QT安装目录查找Qt source,本机的完整路径为 “C:\Qt\Qt5.14.2\5.14.2\Src”

正文开始

这里就不检查驱动是否存在了,假设妹有驱动啊,我们找到Qt source 中对应的 mysql项目
本机路径为 “C:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql”

mysql源码路径

可以看到我这里源码中多了很多文件夹,在这里include、lib是MySQL 数据库的头文件与库文件,为啥会在这里呢,因为当时我在编译时遇到很多问题,气急败坏了
因此就直接把需要包含的头文件和库文件直接拷贝过来了,这里的问题接下来咱们再说。接着往下走

使用打开MySQL项目

打开mysql.pro,以下是重点:
1、注释 QMAKE_USE += mysql
2、包含MySQL的库文件,建议大家跟我一样做,这样省的一会编译起来麻烦
3、注意包含库与编译器是否匹配,编译器为32位时要使用32位的库,编译器为64位时要使用64为的库

// 这里是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)

// 包含MySQL库
INCLUDEPATH += C:/Qt/Qt5.14.2/5.14.2/Src/qtbase/src/plugins/sqldrivers/mysql/include
LIBS += C:/Qt/Qt5.14.2/5.14.2/Src/qtbase/src/plugins/sqldrivers/mysql/lib/x86/libmysql.lib

DESTDIR = ../mysql/mylib32 // 最后编译生成文件的目录

好,Qt这一块妹有问题了,接下来如果库文件妹有问题那么直接运行,需要的qt的库文件应该就生成再mylib32这个文件夹中了,但是明显这不算完,这个库文件从哪里拷贝的呢,请看下节。


MySQL库文件在哪儿

默认安装路径,本机安装的MySQL库文件在 “C:\Program Files\MySQL\MySQL Server 5.7”

MySQL库

回到mysql.pro文件包含路径,可以直接包含这里的路径,但是可能会报错,包含路径的时候注意这个Program Files 这个文件夹是有空格的,我看有些博主特别提示了这里需要注意,所以我就为了方便自己把这两个文件夹 includelib直接拷贝到mysql项目下了,我这里是64位的,别问我为啥知道
需要说明以下,不需要把完整的lib文件拷贝过去,只需要libmysql.dlllibmysql.lib

接下来找32位的库
本机路径 “C:\Program Files (x86)\MySQL\MySQL Connector C 6.1\lib”
此路径下的MySQL库是32位的,别问我为啥知道

MySQL32位库文件

把这个文件拷贝到mysql项目下的lib中,注意区分库文件!!!这两个是32位的

问题:假设没有MySQL Connector 6.1 怎么办
参考《安装MySQL Connector/C++
下载:MySQL Connector/C 6.1

接下来,回到Qt mysql项目


编译MySQL库文件

首先,检查以下库文件是否正确
一个是64位一个是32位
库文件

编译MinGW 32位

1、修改库的路径,选32位的库
2、方便自己,修改DESTDIR 路径,生成的dll文件容易区分啊

INCLUDEPATH += C:/Qt/Qt5.14.2/5.14.2/Src/qtbase/src/plugins/sqldrivers/mysql/include
LIBS += C:/Qt/Qt5.14.2/5.14.2/Src/qtbase/src/plugins/sqldrivers/mysql/lib/x86/libmysql.lib
DESTDIR = ../mysql/mylib32 // 最后编译生成文件的目录

点击运行,会弹出以下对话框,即库文件编译成功

在这里插入图片描述

打开mylib32,查看是否生成qsqlmysql.dlllibqsqlmysql.a

在这里插入图片描述

将这两个文件拷贝到相对应编译器的plugin中

在这里插入图片描述

ok, 至此MinGW32位配置完成,driver not load 就解决了

编译MinGW 64位

1、修改库的路径,选64位的库
2、方便自己,修改DESTDIR 路径,生成的dll文件容易区分啊

INCLUDEPATH += C:/Qt/Qt5.14.2/5.14.2/Src/qtbase/src/plugins/sqldrivers/mysql/include
LIBS += C:/Qt/Qt5.14.2/5.14.2/Src/qtbase/src/plugins/sqldrivers/mysql/lib/libmysql.lib
DESTDIR = ../mysql/mylib64 // 最后编译生成文件的目录

点击运行,会弹出以下对话框,即库文件编译成功
qsqlmysql.dlllibqsqlmysql.a拷贝到相对应编译器的plugin中

编译VS2017 32位

1、修改库的路径,选32位的库
2、方便自己,修改DESTDIR 路径,生成的dll文件容易区分啊

INCLUDEPATH += C:/Qt/Qt5.14.2/5.14.2/Src/qtbase/src/plugins/sqldrivers/mysql/include
LIBS += C:/Qt/Qt5.14.2/5.14.2/Src/qtbase/src/plugins/sqldrivers/mysql/lib/x86/libmysql.lib
DESTDIR = ../mysql/mylibvs32 // 最后编译生成文件的目录

点击运行,会弹出以下对话框,即库文件编译成功
qsqlmysql.dlllibqsqlmysql.a拷贝到相对应编译器的plugin中

编译VS2017 64位

1、修改库的路径,选64位的库
2、方便自己,修改DESTDIR 路径,生成的dll文件容易区分啊

INCLUDEPATH += C:/Qt/Qt5.14.2/5.14.2/Src/qtbase/src/plugins/sqldrivers/mysql/include
LIBS += C:/Qt/Qt5.14.2/5.14.2/Src/qtbase/src/plugins/sqldrivers/mysql/lib/libmysql.lib
DESTDIR = ../mysql/mylibvs64 // 最后编译生成文件的目录

点击运行,会弹出以下对话框,即库文件编译成功
qsqlmysql.dlllibqsqlmysql.a拷贝到相对应编译器的plugin中

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yo~Magee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值