QT qmysql驱动未加载

QT qmysql driver not loaded

我知道这个论坛上已经有很多关于这个问题的话题,但我没能解决我的问题。

我的配置如下:

QT 版本:5.14.2 - mscv2017_64

编译器:mscv amd64

我的问题是我的应用程序没有加载 libmysql.dll。 这是我所做的:

我打开了qt提供的命令行MSCV 2017 64bits,我使用vcvarsall.bat amd64初始化了我的环境。 然后我按照 documentation 中的说明构建了 sql 驱动程序。

这是 qmake 调用的结果:

然后,运行 nmakenmake install以及文件夹C:\Qt.14.2\msvc2017_64\plugins\sqldrivers中,我找到了以下文件。

然后我在创建应用程序的 exe 文件的文件夹中添加了 libmysql.dll。我从 mysql 服务器安装文件夹 C:\Program Files\MySQL\MySQL Server 8.0\lib 中获得了这个文件。

然后我重建了我的应用程序,但我仍然出现同样的错误,说驱动程序没有加载。我使用 QT_DEBUG_PLUGINS=1 标志进行编译,得到的输出是:

"The plugin 'C:/Qt/5.14.2/msvc2017_64/plugins/sqldrivers/qsqlpsqld.dll' uses incompatible Qt library. (Cannot mix debug and release libraries.)" not a plugin QFactoryLoader::QFactoryLoader() checking directory path "C:/Users/Thomas Bouchan/Documents/Personal/C++/SSVP/build-SSVP-project-Desktop_Qt_5_14_2_MSVC2017_64bit-Release/release/sqldrivers" ... Cannot load library C:\Qt.14.2\msvc2017_64\plugins\sqldrivers\qsqlmysql.dll: The specified module could not be found. QLibraryPrivate::loadPlugin failed on "C:/Qt/5.14.2/msvc2017_64/plugins/sqldrivers/qsqlmysql.dll" : "Cannot load library C:\Qt.14.2\msvc2017_64\plugins\sqldrivers\qsqlmysql.dll: The specified module could not be found." QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7"

由此不知何去何从,在指定的文件夹中,dll就在那里...是64位还是32位的问题?我应该用另一个编译器构建驱动程序吗(不是 amd64?)?

我终于设法让它工作了。

驱动编译没有问题,但问题出在libmysql.dll文件上。我不知道这个 dll 发生了什么,但是当我用下载存档的那个替换它时 qsqlmysql.dll_Qt_SQL_driver_5.14.2_MSVC2017_64-Bit.zip。我只需要替换dll,而不是使用存档的插件。

用dependency walker打开qsqlmysqld.dll,我发现libmysql.dll中还需要两个额外的dll文件:LIBSSL-1_1-X64.dllLIBCRYPTO-1_1-X64.dll。它们可以在 mysql 服务器的 bin 目录中找到。就我而言 C:\Program Files\MySQL\MySQL Server 8.0\bin。 在可执行文件的目录中添加这些文件可以解决问题。感谢@king_nak 的提示!