1

我正在尝试加载这样的dll:

dll_handle = LoadLibraryA(QString("%1\\module.dll")
                        .arg(QApplication::applicationDirPath().replace("/", "\\"))
                        .toLocal8Bit().data());

我传递给 LoadLibraryA 的结果文件名是正确的,文件存在并且进程可以读取。问题是什么?

4

1 回答 1

8

GetLastError报告 126,即ERROR_MOD_NOT_FOUND。显然找不到模块。

这有两个明显的原因:

  1. 找不到您尝试加载的模块。
  2. 可以找到您尝试加载的模块,但找不到它所依赖的模块之一。

我建议在配置文件模式下使用Dependency Walker进行调试。这将在运行时监控您的应用程序并准确告诉您找不到哪个模块。

最后,在这个时代,你真的应该选择LoadLibraryW.

于 2012-08-31T12:26:43.730 回答