【问题标题】:Reading Dependency walker output读取 Dependency walker 输出
【发布时间】:2014-02-23 16:34:51
【问题描述】:

我在我的应用程序中使用其中一个 Dll 时遇到了一些问题,我在其上运行了依赖项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.

【问题讨论】:

  • 请注意:如果可能,请将错误消息包含为文本(附加),以便用户更容易找到此线程。谢谢;-)
  • 刚刚编辑的错误非常具有描述性,但我的问题是,如果有这么多问题,他们如何编译 DLL?

标签: c# c++ dll pinvoke dependency-walker


【解决方案1】:

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

所以,你提供的截图,完全不用担心。

如果您在此处遇到应用程序依赖问题,我建议您在 Dependency Walker 的配置文件模式下运行程序(从配置文件菜单项)。这将为您详细诊断加载时和运行时实际发生的情况。您在上面提供的屏幕截图来自静态分析,因此这种静态分析必然总是不完整且不准确。确定程序加载时会发生什么的唯一方法是在加载时对其进行调试。

【讨论】:

  • TL;DR:要检查 32 位 exe,请使用 32 位版本的 Dependency Walker。同样,要检查 64 位 exe,请使用 64 位版本的 Dependency Walker。
  • 自动启动正确版本的便捷工具github.com/juntalis/depends-launcher
猜你喜欢
  • 2016-07-14
  • 1970-01-01
  • 2018-10-06
  • 2023-03-23
  • 2012-05-08
  • 2011-03-11
  • 2011-10-22
  • 2011-01-28
  • 2016-02-09
相关资源
最近更新 更多