Qt打包程序移动到新环境时提示 QMYSQL driver not loaded

发布时间 2023-06-12 18:24:15作者: 清靜

Qt版本是:Qt6.3.2
MySQL版本是:mysql8.0.33

运行时日志提示如下:

Warning: File:() Line:(0) QSqlDatabase: QMYSQL driver not loaded (2023-06-12 17:16:56)
Warning: File:() Line:(0) QSqlDatabase: available drivers: QSQLITE QMARIADB QMYSQL QODBC QPSQL (2023-06-12 17:16:56)

并且我打包后的程序包中已经包含连接mysql8.0所需的依赖库 libmysql.dll、libcrypto-1_1-x64.dll、libssl-1_1-x64.dll、qsqlmysql.dll,但是在新的空白环境中运行时依旧提示上述内容。

libcrypto-1_1-x64.dll、libssl-1_1-x64.dll是在 C:\mysql-8.0.33-winx64\bin 中复制的

libmysql.dll是在 C:\mysql-8.0.33-winx64\lib 中复制的

qsqlmysql.dll则需要qt编译生成,方法查看Qt6.5编译MySQL驱动最简单方法,打包过程中就已经自动复制到包里面了,不需要再手动复制了

我包里面的内容如下所示

在网上搜罗半天,试了各种方法,最后是使用process explorer比较在编译机器与目标机器执行过程中所使用到的依赖库,

发现目标机器运行过程中缺失了vcruntime140.dll、vcruntime140_1.dll两个依赖库,这两个库都属于系统库文件,它在我编译机器中的位置是C:\Windows\System32\vcruntime140.dll

将两个库拷贝到包中,就能够成功连接到数据库了,

我估计在满足连接mysql的依赖库条件下还是不连接数据的问题,大多都是新环境中缺少系统库文件。

process explorer的下载地址是进程监视器 - Sysinternals | Microsoft Learn

process explorer查看执行过程中所使用到的依赖库的方法Process Explorer使用教程

找到具体解决问题来源是(48条消息) QT打包之解决MySQL打包driver not loaded_zhenyu-s5的博客-CSDN博客