LoadLibrary 失败:第一次机会异常 0xC0000139(未找到 DLL)- 如何调试?

2024-03-28

我有一个 dll“mytest.dll”,当通过加载时LoadLibrary(),返回 NULL(并且 127 作为GetLastError())。如果我在“mytest.dll”上使用 DependencyWalker,它会报告它应该正确加载并且所有 DLL 都已正确找到。在主机 exe 上运行 DependencyWalker 的探查器选项会在日志中提供以下相关部分:



00:00:55.099: Loaded "mytest.DLL" at address 0x07860000 by thread 0xBBC.  Successfully hooked module.
00:00:55.115: First chance exception 0xC0000139 (DLL Not Found) occurred in "NTDLL.DLL" at address 0x76E24285 by thread 0xBBC.
00:00:55.115: Unloaded "mytest.DLL" at address 0x07860000 by thread 0xBBC.
00:00:55.115: LoadLibraryW("mytest.dll") returned NULL by thread 0xBBC. Error: The specified procedure could not be found (127).
  

有没有办法对此进行调试,以找出 NTDLL.DLL 报告的 DLL Not Found 消息试图查找的内容?或者我应该去其他地方寻找问题的根源?

请注意,从另一个应用程序加载相同的“mytest.DLL”似乎可以正常工作。


您的应用程序是否会在初始加载(也许)之后尝试通过 GetProcAddress 调用未找到的特定 DLL 函数?它是 32 位还是 64 位应用程序?

如果它按照您的建议在另一个应用程序中正确加载,那么它可能有一个正确的入口点。

A quick 表明您返回的错误代码可能来自 DLL 中缺少的函数名称(或特定函数的序数值)。我建议以类似的方式打开DLLExescope http://hp.vector.co.jp/authors/VA003525/emysoft.htm并检查出口清单。

它还可以解释为什么 DLL 与另一个应用程序一起工作(也许另一个应用程序在 DLL 中使用不同的导出函数)?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LoadLibrary 失败:第一次机会异常 0xC0000139(未找到 DLL)- 如何调试? 的相关文章

随机推荐