同样,未加载 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 驱动程序。图书馆虽然的主要内容,如果未能解决你的问题,请参考以下文章
qt 5.8 sql 连接错误:Windows 10 上未加载 QMYSQL 驱动程序