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

问题描述 投票:0回答:1

我尝试使用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();
}
c++ qt dll window
1个回答
0
投票

error list you need is here。该错误的符号名称为ERROR_BAD_EXE_FORMAT,错误消息为<filesoandso> is not a valid Win32 application.您尝试打开的DLL已损坏,或者-很有可能-它用于其他体系结构。如果要编译32位,请使用32位DLL。如果您要编译64位,请使用64位DLL。

您很可能在系统上同时使用32位和64位编译器。如果您使用Qt Creator,则切换起来应该很容易-只需选择其他套件即可。下面的屏幕快照中没有显示64位工具包,但是如果您在安装Qt时安装了它们,则应该安装它们。

A screenshot from Qt Creator, displaying the Project pane in lower left corner of the application.

为什么将错误称为“错误的EXE”而不是“错误的DLL”?因为在Windows上,两个文件的PE(Portable Executable)格式相同,并且文件中只有启动信息,PE文件才变成可以自行启动的可执行文件。 EXE可以执行DLL可以执行的所有操作,包括导出符号:)

顺便说一句:使用单斜杠。 Qt内部使用正斜杠作为路径定界符。这样,它可以轻松地保持跨平台。当需要与操作系统接口时,它将翻译它们。

© www.soinside.com 2019 - 2024. All rights reserved.