2014-01-31 103 views
8

我使用的DLL一个在我的应用程序有一些问题,我跑的Dependency Walker就可以了。我不知道如何读它,但我得到了以下结果enter image description here阅读的Dependency Walker输出

没有暗示任何的x86-x64的不相容性?无论如何,我可以解决这个问题吗?

Error: At least one required implicit or forwarded dependency was not found. 
Error: At least one module has an unresolved import due to a missing export function in an implicitly dependent module. 
Error: Modules with different CPU types were found. 
Warning: At least one delay-load dependency module was not found. 
Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module. 
+1

刚一说明:如果可能的话,包括错误消息文本(附加),所以它是用户更容易找到这个线程。谢谢;-) –

+0

刚刚编辑的错误是相当具有描述性的,但我的问题是,如果有这么多的问题,他们如何编译DLL以开始? – TeaLeave

回答

7

当您查看64位版本的Dependency Walker中的32位可执行文件时,您通常会看到那种视图。因为Dependency Walker是64位的,所以当它试图在DLL搜索路径上查找DLL时,它会找到64位版本。您的32位程序将在WOW64仿真器中运行并找到32位版本。

所以,你已经提交的截图中,有什么都予以关注。

如果您有您的应用程序依赖的问题在这里我建议你下的Dependency Walker的个人资料模式下运行程序(从配置文件菜单项)。这会给你详细的诊断实际发生在加载时间和运行时间的情况。上面介绍的屏幕截图来自静态分析,而且这种静态分析通常是不完整的,并且会有不准确的地方。确保程序加载时发生的情况的唯一方法是在加载时调试它。

+4

** TL; DR **:用于检查32位exe,请使用32位版本的Dependency Walker。同样,对于检查64位exe使用64位版本的Dependency Walker。 – mozzbozz

+0

方便的工具自动启动正确的版本https://github.com/juntalis/depends-launcher – Sam