C++ 无法加载库*.dll未知错误0x000000c1

C++ 无法加载库*.dll未知错误0x000000c1,c++,qt,dll,window,C++,Qt,Dll,Window,我尝试使用QLibrary从qt项目调用controller.dll,但它返回这样的错误。 无法加载库E:\dll\controller.dll的绝对路径:未知错误0x000000c1。 这是什么意思 QLibrary lib; lib.setFileName("E:\\absolute path to the dll\\controller.dll"); if(lib.load()) { qDebug()<<"Loaded"; } else { qDebug()&l

我尝试使用QLibrary从qt项目调用controller.dll,但它返回这样的错误。 无法加载库E:\dll\controller.dll的绝对路径:未知错误0x000000c1。 这是什么意思

QLibrary lib;
lib.setFileName("E:\\absolute path to the dll\\controller.dll");
if(lib.load()) {
    qDebug()<<"Loaded";
} else {
    qDebug()<<"Not loaded";
    qDebug()<<lib.errorString();
}
这个。该错误的符号名为error\u BAD\u EXE\u FORMAT,错误消息不是有效的Win32应用程序。您试图打开的DLL已损坏,或者很可能是针对不同的体系结构。如果要编译32位,请使用32位DLL。如果要编译64位,请使用64位DLL

您的系统上很可能同时有32位和64位编译器。如果您使用Qt Creator,它应该很容易切换-只需选择一个不同的工具包。下面的屏幕截图中没有显示64位工具包,但是如果您在安装Qt时安装了64位工具包,则应该有64位工具包

为什么错误被称为坏EXE而不是坏DLL?因为在Windows上,两个文件都具有相同的PE可移植可执行文件格式,只有文件中存在启动信息,才能将PE文件转换为可自行启动的可执行文件。EXE可以执行DLL可以执行的所有操作,包括导出符号:

作为旁白:使用单正斜杠。Qt在内部使用正斜杠作为路径分隔符。这样,它可以轻松地保持跨平台。当需要与操作系统接口时,它会转换它们。

。该错误的符号名为error\u BAD\u EXE\u FORMAT,错误消息不是有效的Win32应用程序。您试图打开的DLL已损坏,或者很可能是针对不同的体系结构。如果要编译32位,请使用32位DLL。如果要编译64位,请使用64位DLL

您的系统上很可能同时有32位和64位编译器。如果您使用Qt Creator,它应该很容易切换-只需选择一个不同的工具包。下面的屏幕截图中没有显示64位工具包,但是如果您在安装Qt时安装了64位工具包,则应该有64位工具包

为什么错误被称为坏EXE而不是坏DLL?因为在Windows上,两个文件都具有相同的PE可移植可执行文件格式,只有文件中存在启动信息,才能将PE文件转换为可自行启动的可执行文件。EXE可以执行DLL可以执行的所有操作,包括导出符号:

作为旁白:使用单正斜杠。Qt在内部使用正斜杠作为路径分隔符。这样,它可以轻松地保持跨平台。当需要与操作系统接口时,它会转换它们