22

当 my.xll 插件加载到我的客户端 PC 上时,我遇到了问题。它在启动时使 Excel 崩溃(可能是因为缺少依赖的 dll)。

我知道可以在配置文件模式下使用dependency walker 来找出.exe 运行时加载的dll。当我在分析 Excel 时尝试依赖 walker 挂起时,我无法找出原因。

在命令窗口中我运行了这个:

C:\Program Files (x86)\Windows Kits\8.1\Tools\x86>start /wait depends.exe /c /f:1 /pb /pp:1 /pg:1 /oc:d:\temp\Log。 txt "C:\Program Files (x86)\Microsoft Office\Office14\excel.exe"

但它挂起。 在此处输入图像描述

我正在使用依赖 walker 版本 2.2.9600 x86、Windows 8.1 x86、office 2010 x86

我还尝试使用全新安装的 win 8.1 和 Office 2010 设置 VM 机器,但加载 .xll 时 XL 不会在该机器上崩溃。

我在另一台机器 Windows 10 x64、office 2013 x64 和 dependency walker x64 上工作。我可以分析 Excel。

注意:我最终改用了 Sysinternals Process Explorer。有点复杂但有效。

4

3 回答 3

26

我目前使用的是 Windows 10 build 1809,并且对于我尝试使用的每个 dll,depends.exe 都会挂起。依赖主页显示“Dependency Walker 在 Windows 95、98、Me、NT、2000、XP、2003、Vista、7 和 8 上运行”,所以我猜它不受支持。

Try Dependencies - 一个开源的现代 Dependency Walker,它对我来说很好用。

于 2020-09-21T11:49:12.730 回答
8

Microsoft 一直在非常缓慢地向 Windows 操作系统 API 库添加模块化、版本控制和间接性。1这项工作始于 Windows 7,但仅在最近的 Windows 10 版本中,这一举措才触及了一些核心 win32/内核库,基本上所有传统的 Windows 二进制文件都链接到并使用这些库。

幼稚的依赖遍历器将为自己创建一个图组合爆炸,他们尝试渲染完整的依赖图,而不需要一些额外的逻辑来短路这个间接层,或者将图搜索的深度限制为在一定深度上按需进行。如果你的程序比较简单,depends.exe最终会唤醒并为你渲染依赖图,但可能需要几个小时。

我不知道作者是否depends.exe打算更新它,但与此同时,正如 Andrew 在他的回答中指出的那样,lucasg/DependenciesGitHub 上的项目似乎没有遇到同样的问题。

另请参阅此 SO 帖子:Dependency Walker: missing dlls

于 2021-02-21T05:20:29.277 回答
5

重新配置模块搜索顺序。尝试禁用除 KnownDLLs 和应用程序目录之外的所有文件,然后打开文件进行检查。Dependency walker 构建了非常大的子依赖项列表,并且 GUI 元素挂在此操作上:( 在此处输入图像描述

于 2021-11-10T19:48:06.823 回答