【问题标题】:Cannot load library *.dll Unknown error 0x000000c1无法加载库 *.dll 未知错误 0x000000c1
【发布时间】:2020-07-19 16:37:16
【问题描述】:

我尝试使用 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】:

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

    您的系统上很可能同时具有 32 位和 64 位编译器。如果您使用 Qt Creator,它应该很容易切换 - 只需选择不同的套件。下面的屏幕截图中没有显示 64 位套件,但如果您在安装 Qt 时已经安装了它们,那么您应该拥有它们。

    为什么错误被称为“bad EXE”而不是“bad DLL”?因为在 Windows 上,这两个文件具有相同的 PE(便携式可执行文件)格式,并且只有文件中存在启动信息才能将 PE 文件转换为可以自行启动的可执行文件。 EXE 可以做 DLL 可以做的所有事情,包括导出符号 :)

    顺便说一句:使用单个正斜杠。 Qt 在内部使用正斜杠作为路径分隔符。这样它就可以很容易地保持跨平台。它在需要与操作系统交互时翻译它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-22
      • 2015-06-23
      • 2021-12-21
      • 1970-01-01
      • 2012-07-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多