C++ QT qmysql驱动程序未加载

C++ QT qmysql驱动程序未加载,c++,qt,mysql-connector,C++,Qt,Mysql Connector,我知道在这个论坛上已经有很多关于这个问题的话题,但是我并没有按照它们来解决我的问题 我的配置如下: QT版本:5.14.2-mscv2017_64 编译器:mscvamd64 我的问题是我的应用程序没有加载libmysql.dll。 以下是我所做的: 我打开了qt提供的命令行MSCV 2017 64位,并使用vcvarsall.bat amd64初始化了我的环境。 然后,我构建了sql驱动程序,如中所述 以下是qmake调用的结果: 然后,运行nmake和nmake install并在文件夹C

我知道在这个论坛上已经有很多关于这个问题的话题,但是我并没有按照它们来解决我的问题

我的配置如下:

QT版本:5.14.2-mscv2017_64

编译器:mscvamd64

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

我打开了qt提供的命令行MSCV 2017 64位,并使用
vcvarsall.bat amd64
初始化了我的环境。 然后,我构建了sql驱动程序,如中所述

以下是qmake调用的结果:

然后,运行
nmake
nmake install
并在文件夹
C:\Qt\5.14.2\msvc2017\u 64\plugins\sqldrivers
中找到以下文件。

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

然后我重新构建了我的应用程序,但仍然出现相同的错误,即驱动程序未加载。我使用
QT\u DEBUG\u PLUGINS=1
标志进行编译,结果是:

“插件'C:/Qt/5.14.2/msvc2017_64/plugins/sqldrivers/qsqlpsqld.dll'使用了不兼容的Qt库。(不能混合使用调试库和发布库)。” 不是插件 QFactoryLoader::QFactoryLoader()正在检查目录路径“C:/Users/Thomas Bouchan/Documents/Personal/C++/SSVP/build-SSVP-project-Desktop_Qt_5_14_2_MSVC2017_64bit-Release/Release/sqldrivers”。。。 无法加载库C:\Qt\5.14.2\msvc2017\u 64\plugins\sqldrivers\qsqlmysql.dll:找不到指定的模块。 QLibraryPrivate::loadPlugin在“C:/Qt/5.14.2/msvc2017_64/plugins/sqldrivers/qsqlmysql.dll”上失败:“无法加载库C:\Qt\5.14.2\msvc2017_64\plugins\sqldrivers\qsqlmysql.dll:找不到指定的模块。” QSqlDatabase:未加载QMYSQL驱动程序 QSqlDatabase:可用驱动程序:QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7“


从这里我不知道该怎么做,因为在指定的文件夹中,dll就在那里……这是一个64位还是32位的问题?我应该用另一个编译器(不是
amd64
?)构建驱动程序吗?

我终于设法让它工作了

驱动程序的编译没有问题,但问题来自
libmysql.dll
文件。我不知道这个dll发生了什么,但当我用下载的归档文件替换它时,我只需要替换dll,而不需要使用归档文件的插件

用dependency walker打开
qsqlmysqld.dll
,我发现在
libmysql.dll
中需要另外两个dll文件:
LIBSSL-1_1-X64.dll
LIBCRYPTO-1_1-X64.dll
。它们可以在mysql服务器的bin目录中找到。在我的例子中是
C:\Program files\mysql\mysql server 8.0\bin

将这些文件添加到可执行文件的目录中可以解决问题。感谢@king_nak提供的提示!

无法混合调试库和发布库:这不是32/64位的问题,而是调试/发布问题。我同意,但有什么问题吗?我正在以调试模式在Qt creator中运行我的应用程序,qsqlmysqld.dll是调试dll…啊,我看到它是另一个er插件,MySQL稍后有一条不同的消息。似乎找不到依赖的DLL。能否尝试在中加载
qsqlmysql.DLL