导致“由{dll}导入的过程无法加载”的K32EnumProcessModules

时间:2012-09-24 21:22:41

标签: .net-4.0 dll dependency-walker windows-kernel

我有一个应用程序,它依赖于我组织中其他人构建的几个库,其中一个已停止工作。我在命令行中收到此错误:

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和新DLL之间找到的唯一区别是KERNEL32.DLL在较新的DLL中显示为红色,而功能K32EnumProcessModules显示为红色(未导出)。对于旧DLL,此功能根本不会出现(绿色或其他)。

总结到目前为止:一个DLL工作而另一个没有;两者都在Dependency Walker中显示为“坏”,但只有一个功能K32EnumProcessModules显示为不好。我不知道这个函数是否是导致“未解决的导入”错误的原因,并且想知道。

我认为可能导致这种情况的应用程序中唯一的变化是将运行时从.NET 2.5升级到.NET 4.此升级是出于与此DLL无关的原因而进行的,并且不应影响它: DLL不会对高于2.5的.NET组件进行任何调用,并且我组织中使用相同库的其他人报告它可以在.NET 4中正常工作。

我意识到我提供稀疏信息,主要是因为我不确定哪些信息可以帮助解决这个问题。如果您希望我进行测试以了解更多信息,请告诉我。

1 个答案:

答案 0 :(得分:0)

可能与此相关https://blogs.msdn.microsoft.com/vcblog/2009/08/27/windows-sdk-v7-0v7-0a-incompatibility-workaround/ 定义PSAPI_VERSION = 1可能会有所帮助。