我有一个应用程序,它依赖于我组织中其他人构建的几个库,其中一个已停止工作。我在命令行中收到此错误:
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.
这似乎很简单,除了:
我可以在旧DLL和新DLL之间找到的唯一区别是KERNEL32.DLL在较新的DLL中显示为红色,而功能K32EnumProcessModules显示为红色(未导出)。对于旧DLL,此功能根本不会出现(绿色或其他)。
总结到目前为止:一个DLL工作而另一个没有;两者都在Dependency Walker中显示为“坏”,但只有一个功能K32EnumProcessModules显示为不好。我不知道这个函数是否是导致“未解决的导入”错误的原因,并且想知道。
我认为可能导致这种情况的应用程序中唯一的变化是将运行时从.NET 2.5升级到.NET 4.此升级是出于与此DLL无关的原因而进行的,并且不应影响它: DLL不会对高于2.5的.NET组件进行任何调用,并且我组织中使用相同库的其他人报告它可以在.NET 4中正常工作。
我意识到我提供稀疏信息,主要是因为我不确定哪些信息可以帮助解决这个问题。如果您希望我进行测试以了解更多信息,请告诉我。
答案 0 :(得分:0)
可能与此相关https://blogs.msdn.microsoft.com/vcblog/2009/08/27/windows-sdk-v7-0v7-0a-incompatibility-workaround/ 定义PSAPI_VERSION = 1可能会有所帮助。