问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

使用dumpbin和depends查看dll(exe)的依赖

创作时间:
作者:
@小白创作中心

使用dumpbin和depends查看dll(exe)的依赖

引用
CSDN
1.
https://blog.csdn.net/qq_44924694/article/details/146459259

在软件开发过程中,了解DLL或EXE的依赖关系对于排除加载和执行故障至关重要。本文将详细介绍如何使用dumpbin和Dependency Walker这两个工具来查看DLL/EXE的依赖关系,并提供了解决Dependency Walker在Win10上无响应问题的方案。

1. 使用dumpbin查看一级依赖

要使用dumpbin查看DLL或EXE的依赖关系,首先需要定位到dumpbin文件夹。通常情况下,该文件夹位于C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64。如果难以定位,可以使用Everything等工具进行查找。

在dumpbin文件夹下打开命令提示符(cmd),然后输入相应的dumpbin命令即可查看依赖关系。需要注意的是,dumpbin只能查看一级依赖。

查找DLL所有依赖

dumpbin /dependents xxxx.exe #即可查询该exe的依赖项dll。
dumpbin /dependents *.dll  #查询所有依赖

查看导出函数的名字

dumpbin /exports /dependents D:\0_Project_C++\CsharpTestDll\CsharpTestDll\bin\Release\TestDll.dll

查看程序依赖库dll的步骤

  1. 查看依赖:dumpbin /dependents *.dll #查询所有依赖
  2. 用Everything查找依赖库的位置并拖动到当前exe目录,全部拷贝过来肯定能运行
  3. 删除某个DLL再看能否运行
  4. 如果有自己编写的dll,请单独检查其依赖,将对应的依赖库也拷贝过来
  5. 如果经过上述步骤还不能运行,请检查版本或自己编写的dll是否有问题

2. 使用Dependency Walker查看所有依赖

Dependency Walker是一个功能强大的免费工具,可以扫描任何32位或64位Windows模块(如EXE、DLL、OCX、SYS等),并建立所有相关模块的分层树形图。它对于排除加载和执行模块故障错误非常有用,能够检测出许多常见应用问题,例如缺少模块、无效的模块、导入/导出不匹配、循环依赖错误、不匹配的机器类型模块和模块初始化失败。

下载与使用

下载地址:http://www.dependencywalker.com/

下载后,可以直接打开depends.exe,将exe或dll文件拖入其中即可查看依赖关系。

解决Win10无响应问题

在Windows 10上使用Dependency Walker时,可能会遇到无响应的问题。这主要是因为depends.exe运行时需要搜索的路径过多。以下是两种解决方案:

手动设置PATH

  1. 创建一个名为run_depends.txt的文件
  2. 输入以下内容(两行)
set PATH=""
"D:\Tools\depends\depends22_x64\depends.exe"

注意:请根据实际情况修改exe路径,且路径中不要包含中文字符。

  1. 将run_depends.txt的后缀名改为bat,即成为run_depends.bat脚本文件。
  2. 双击运行run_depends.bat,运行之后,可以看到depends运行界面,然后把你要分析的dll或者exe拖进去,大概10秒左右能出来结果,比之前看起来卡死的情况快多了。

在Dependency Walker设置PATH

Dependency Walker本身支持设置搜索路径。可以通过以下步骤进行设置:

  1. 打开Dependency Walker
  2. 选择菜单栏中的Options -> Configure Module Search Order…
  3. 在弹出的设置界面中,根据需要进行设置

3. 总结

  • dumpbin只能查看一级依赖,如果需要一次查看所有依赖则需要使用Dependency Walker。
  • Dependency Walker可以自定义搜索目录,合理设置搜索目录,会大大提高搜索速度!
  • 默认情况下,Dependency Walker会搜索PATH指定的路径,所以也可以通过修改PATH环境变量的值达到相同的效果。
  • 如果长时间(大概5秒钟)没有处理界面消息的话,界面就会无响应。
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号
使用dumpbin和depends查看dll(exe)的依赖