Pet*_*asi 5 c++ dll exception loadlibrary
我有一个dll"mytest.dll",当加载via时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 位应用程序?
如果它按照您的建议在另一个应用程序中正确加载,那么它可能有一个正确的入口点。
快速谷歌搜索表明您返回的错误代码可能来自 DLL 中缺少的函数名称(或特定函数的序数值)。我建议在Exescope之类的工具中打开 DLL并检查导出列表。
它还可以解释为什么 DLL 与另一个应用程序一起工作(也许另一个应用程序在 DLL 中使用不同的导出函数)?