同样,未加载 QT 5.12.2 QMYSQL 驱动程序。图书馆虽然

Posted

技术标签:

【中文标题】同样,未加载 QT 5.12.2 QMYSQL 驱动程序。图书馆虽然【英文标题】:Again, QT 5.12.2 QMYSQL driver not loaded. The libraries are though 【发布时间】:2020-05-18 12:29:58 【问题描述】:

Visual Studio 2019 Professional,针对 qt 5.12.2 (Qt\5.12.2\msvc2017_64) 重新定位的 qt 项目。 尝试连接到 mysql 数据库,虽然文件

qsqlmysqld.dll 和 libmysql.dll

加载我得到的输出是

QSqlDatabase:未加载 QMYSQL3 驱动程序 QSqlDatabase:可用 驱动程序:QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7

无法连接

这次有什么问题?

编辑:出于澄清目的,这是我得到的输出

“当前项目”(Win32):已加载“C:\Qt\5.12.2\msvc2017_64\plugins\sqldrivers\qsqlmysqld.dll”。

“当前项目”(Win32):已加载“....\libmysql.dll”。

所以它确实没有加载 libmysqld.dll 库。 我还不清楚括号中的 Win32,因为我选择了 x64。

我已经尝试过 x86 和 x64 版本的 libmysql.dll,但没有成功。 此外运行 dumpbin 以识别库依赖项似乎一切都在那里

【问题讨论】:

你怎么知道它们被加载了?这些名称表明您可能正在混合发布和调试模式库? (带“d”前缀和不带) True.. 这是一个很好的通知...但这是我得到的输出 >'Current Project' (Win32): Loaded ....\sqldrivers\qsqlmysqld.dll'。 >“当前项目”(Win32):已加载 ....\debug\libmysql.dll'。 【参考方案1】:

最后我找到了一个解决方案,但有一些妥协。 首先我们无法调试,oracle 不允许。所以我们需要确保它是一个发布配置。

为了让应用程序运行,我们需要在可执行文件是 libmysql.dll 的 x64 位版本的文件夹中进行复制。但这还不够 这个 dll 有一些依赖项似乎在版本之间有所不同,所以为了找到它们,我必须运行带有 /dependents 标志的 dumpbin 命令。对于我的情况和版本,mysql 服务器包含 dll,其中

libcrypto-1_1-x64.dll

libssl-1_1-x64.dll

之后我就可以成功地查询 Mysql Server 的实例了

【讨论】:

以上是关于同样,未加载 QT 5.12.2 QMYSQL 驱动程序。图书馆虽然的主要内容,如果未能解决你的问题,请参考以下文章

Qt5、C++:未加载 QMYSQL 驱动程序

qt 5.8 sql 连接错误:Windows 10 上未加载 QMYSQL 驱动程序

qt5.1.1 mysql ubuntu QMYSQL驱动未加载

未加载 QMYSQL 驱动程序,尝试了所有提示

PyQt5 QMYSQL 驱动程序未加载

QMYSQL 可用但无法加载