当前位置: 首页 > 编程语言 > C#

如何查找“无法加载‘xxx.dll’导入的程序源”,例外?分享

时间:2023-04-10 10:42:29 C#

如何找到“无法加载'xxx.dll'导入的程序源。”例外?过去一周我一直在追逐这个例外。情况是:我有一个用C#编写并在VisualStudio2010中构建的应用程序。该应用程序包含一个DLL,它是非托管代码库的包装器。非托管代码是用C++编写的,并在VisualStudio2008中构建。这是必需的,因为代码引用了一个附加库(Qt),并且代码以WinCE版本5为目标(由于现场支持的设备而需要)。我已经尝试了很多在这里看到的建议,包括使用各种依赖遍历器(VS2008Dependency、dependency_walker和Dependz)以及其他工具,例如SysInternals的Reflector和ProcessMonitor。这些工具都没有显示任何问题(Reflector)或在我的环境(Win7)中过时的旧依赖项,如DCOMP.DLL、GPSVC.DLL和IESHIMS.DLL。在调试器中,我可以直接执行我的代码,直到我实例化一个引用我的托管包装器DLL的对象。它不进入对象的实例化,而是立即抛出异常。在ProcessExplorer(来自SysInternals)中,我可以看到加载的托管DLL以及必要的帮助程序DLL。在ProcessMonitor(来自SysInternals)中,出现问题时会出现一条没有堆栈的NotFound消息。它失败。任何关于发现此问题的想法或想法将不胜感激。@HansPassat-感谢您提供有关全局标志的提示。这是一篇关于使用这些工具的优秀博客文章。大多数Google对“ShowLoaderStacks”的引用所引用的gflags.exe程序是Windows设备驱动程序开发工具包(WinDDK)的一部分,它管理该帖子中提到的注册表设置。运行“ShowLoaderStacks”的输出确定应该在我的非托管DLL中的符号不??在我正在使用的DLL中。结果我构建了错误版本的DLL。这是由于我对构建过程的理解不足(太多版本构建了太多不同的方式)。工作标准工具:DependencyWalker以上是C#学习教程:如何找到“Thesourceoftheprocedureimportedby'xxx.dll'couldnotbeloaded”。例外?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: