【问题标题】:K32EnumProcessModules causing "A procedure imported by {dll} could not be loaded"K32EnumProcessModules 导致“无法加载由 {dll} 导入的过程”
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-29
      • 1970-01-01
      相关资源
      最近更新 更多