我有一个 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(使用前将#替换为@)