winapi - LoadLibraryExW() 失败,最后一个错误是 ERROR_MOD_NOT_FOUND,但没有缺少依赖项?

标签 winapi loadlibrary dependency-walker

客户正在使用我们的 dll,该 dll 正在创建一个使用开源库的子进程,最终由于调用 LoadLibraryExW() 而失败,返回的最后一个错误是 ERROR_MOD_NOT_FOUND。这发生在 WinXP 32 位上,但不会发生在其他机器上。但是我们知道安装了正确的依赖项集,甚至在同一目录中。

所以我们很自然地想到,使用 Dependency Walker 来查找特定机器上缺少什么依赖项。不幸的是,它没有显示任何缺失,只是一些不是库的直接依赖项的延迟加载警告。根据我使用depends.exe 的经验,它总是揭示缺少的依赖项是什么。

所以在这一点上,我已经把我的头发拉出来试图理解如果所有库的依赖项都存在,为什么我会收到 ERROR_MOD_NOT_FOUND ?使这台机器独一无二的唯一另一件事是它非常安全,因为它由政府使用,但如果我们遇到访问/权限问题,我希望有不同类型的错误代码。

我已经构建了一个小的 Win32 可执行文件,它只在所述库上调用 LoadLibraryExW() ,当它从与库所在的同一目录运行时,它会在客户有问题的机器上毫无问题地加载库。

一件事是我们的产品是一个 ActiveX 插件,它启动子进程,子进程调用第 3 方库,第 3 方库有问题的 LoadLibraryExW() 调用。那么也许它失败的原因是它运行的上下文(例如来自浏览器)?

最佳答案

使用 Profiling应用程序上的 Dependency Walker 选项。可能该库正在尝试动态解析某些 API(使用 LoadLibrary/GetProcAddress),而这不会出现在静态依赖项中。

关于winapi - LoadLibraryExW() 失败,最后一个错误是 ERROR_MOD_NOT_FOUND,但没有缺少依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16700810/

相关文章:

C、Windows API递归导航子目录

dll - LoadLibrary() - "Invalid Access Memory Location (998)"

android - "Movesense ECG sample keeps stopping"和错误 “couldn' t 找到 "libmds.so"

C++ - LoadLibrary 为自制 DLL 返回 126 错误

c++ - 依赖遍历器中缺少 Dll

windows - 依赖行者 : missing dlls

c++ - 可执行文件是否可以要求管理员权限? (Windows 7的)

c# - 如何将 native 窗口处理程序 (HWND) 嵌入到 C# WPF 应用程序中

c# - 在文件/目录上设置时间戳非常慢

c# - 读取 Dependency walker 输出