LoadLibraryA失败,找不到模块,但文件名是正确的

Tam*_*lei 1 c++ winapi

我想加载一个像这样的DLL:

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

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

Dav*_*nan 8

GetLastError报告126,即ERROR_MOD_NOT_FOUND.显然无法找到模块.

这有两个明显的原因:

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

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

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