You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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 install
    
    编译完成后,驱动文件会自动复制到sqldrivers目录下。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:13:13