【发布时间】:2012-09-16 09:22:25
【问题描述】:
我有一个应用程序依赖于我组织中其他人构建的几个库,其中一个已停止工作。我在命令行中收到此错误:
Unhandled Exception: System.IO.FileLoadException: A procedure imported by 'XXX.dll' could not be loaded.
我打开了 Dependency Walker 试图找出问题的根源,尽管我应该说我是 Dependency Walker 的新手,我真的不知道自己在做什么。这是我在日志窗口中看到的内容:
Error: At least one module has an unresolved import due to a missing export function in an implicitly dependent module.
这似乎很简单,除了:
- 由于我对 DW 不熟悉,我似乎找不到 什么 模块这个错误实际上是指
- 旧版本应用程序附带的同一个 DLL 仍然有效,但在 Dependency Walker 中显示相同的内容
我发现新旧 DLL 之间的唯一区别是 KERNEL32.DLL 在新版本中显示为红色,而函数 K32EnumProcessModules 显示为红色(未导出)。对于旧 DLL,这个相同的函数根本不会出现(绿色或其他)。
总结到目前为止:一个 DLL 有效,另一个无效;两者在 Dependency Walker 中都显示为“坏”,但只有一个函数 K32EnumProcessModules 显示为不好。我不知道这个函数是否是导致“未解决的导入”错误的原因,并想知道。
我认为可能导致此问题的唯一更改是将运行时从 .NET 2.5 升级到 .NET 4。此升级是出于与此 DLL 无关的原因进行的,不应影响它:该 DLL 不会对高于 2.5 的 .NET 组件进行任何调用,而我组织中使用同一库的其他人报告说它可以在 .NET 4 上正常工作。
我意识到我提供的信息很少,主要是因为我不确定哪些信息有助于解决此问题。如果您希望我进行测试以了解更多信息,请告诉我。
【问题讨论】:
标签: .net-4.0 dll dependency-walker windows-kernel