64位Qt+MSVS2017编译环境下libmysql.dll驱动加载失败求助
解决MSVS2017 64位编译Qt应用时QMYSQL驱动加载失败的问题
我来帮你搞定这个头疼的问题——之前用MinGW 32位时直接复制libmysql.dll就行,但换到MSVC2017 64位环境就不管用,核心原因是Qt的QMYSQL驱动和编译工具链强绑定,不能直接套用MinGW的经验。下面是一步步的解决方案:
1. 确认Qt的MSVC2017 64位MySQL驱动是否存在
首先检查你的Qt安装目录,找到对应MSVC2017 64位的插件路径:Qt\5.xx\msvc2017_64\plugins\sqldrivers
里面必须有qsqlmysql.dll和qsqlmysql.lib这两个文件——这是专门为MSVC2017 64位编译的驱动。如果没有,你需要手动编译驱动。
2. 手动编译Qt MySQL驱动(如果没有现成的)
步骤:
- 先下载64位、适配MSVC2017的MySQL Connector/C(比如Connector/C 6.1或更高版本,注意选Windows x86_64的MSVC版本)。
- 打开Qt自带的
Qt 5.xx for MSVC2017 64-bit Command Prompt(在开始菜单的Qt文件夹里找),确保环境变量已经配置好。 - 进入Qt MySQL驱动的源码目录:
cd Qt\5.xx\Src\qtbase\src\plugins\sqldrivers\mysql - 用qmake指定MySQL的头文件和库路径,替换成你自己的Connector路径:
qmake "INCLUDEPATH+=C:\mysql-connector\include" "LIBS+=C:\mysql-connector\lib\libmysql.lib" mysql.pro - 执行编译和安装:
编译完成后,驱动文件会自动复制到nmake nmake installsqldrivers目录下。
3. 正确配置64位libmysql.dll
- 必须使用64位的
libmysql.dll(从你下载的MySQL Connector/C 64位包的lib目录里取,别拿32位的凑)。 - 把这个dll放到以下任意一个位置:
- 你的应用程序可执行文件所在的目录(最推荐,避免冲突);
- 系统的
C:\Windows\System32目录(不推荐,容易和其他程序的dll冲突); - 把MySQL Connector的
lib目录添加到系统环境变量PATH里(添加后需要重启电脑生效)。
4. 调试验证驱动加载
可以在代码里加一段调试代码,看看具体的错误信息:
#include <QDebug> #include <QSqlDatabase> #include <QSqlError> int main() { qDebug() << "Available drivers:" << QSqlDatabase::drivers(); QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); if (!db.isValid()) { qDebug() << "Driver load failed:" << db.lastError().text(); } return 0; }
如果还是报错,用Dependency Walker工具检查qsqlmysql.dll和libmysql.dll的依赖是否缺失,重点看是否有MSVC2017的运行时库缺失(比如vcruntime140.dll)。
内容的提问来源于stack exchange,提问作者smsware
相关产品推荐
相关产品推荐

