LoadLibrary函数返回给我错误代码182.来自MSDN:
ERROR_INVALID_ORDINAL:“操作系统无法运行%1”
有没有人能更好地描述这个错误是什么?
答案 0 :(得分:3)
非常模糊的错误。然而,术语“序数”与DLL强烈相关。 DLL包含导出函数列表以及导入函数列表。其他依赖的DLL。这些导出和导入通常都有一个名称,但这不是必需的。他们总是有一个数字,数字是“序数”。
要开始诊断,请使用SDK的Dumpbin.exe工具。首先运行:
Dumpbin /exports Blah.dll
并查看导出列表。您应该看到序数以及名称。如果全部结账,请运行
Dumpbin /imports Blah.dll
获取依赖项列表。奇怪的是,它依赖于该DLL没有的数字在另一个DLL中的函数。无论如何都是这样的。使用DependencyWalker工具可能会减少费力。如果第一步失败,那么在构建DLL时出现了严重错误。如果第二步失败,那么你可能正在研究某种DLL Hell问题。
答案 1 :(得分:0)
您确定此错误来自LoadLibrary吗? Windows DLL允许您按名称和序号值指定导出。也就是说,每个功能都可以通过数字来识别。如果您调用GetProcAddress并指定无效序号,那么您将收到此错误。
我最好的猜测是,您正在加载的DLL是在其DllMain中调用GetProcAddress并指定无效序号。这会导致它失败,并且当您调用GetLastError时,您将获得ERROR_INVALID_ORDINAL,因为这是发生的最后一个错误。