文章目录
- 1. 使用dumpbin查看一级依赖
- 查看程序依赖库dll的步骤
- 2. 使用Dependency Walker查看所有依赖
- 手动设置PATH
- 在Dependency Walker设置PATH
- 3. 总结
使用 Dependency Walker(旧版)或 Visual Studio的“依赖项查看器”(如dumpbin /dependents TestDll.dll)检查缺失的依赖。
1. 使用dumpbin查看一级依赖
进入到dumpbin文件夹,我这里是C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64,不方便定位时可以使用everything查找。然后在该文件夹下打开cmd,输入dumpbin命令即可实现对dll依赖的查看。注意: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的步骤
- 查看依赖 dumpbin /dependents *.dll #查询所有依赖
- 用Everything查找依赖库的位置并拖动到当前exe目录,全部拷贝过来肯定能运行
- 删除某个DLL再看能否运行
- 如果有自己编写的dll,请单独检查其依赖,将对应的依赖库也拷贝过来
- 如果经过上述步骤还不能运行,请检查版本或自己编写的dll是否有问题
2. 使用Dependency Walker查看所有依赖
Dependency Walker是一个免费的实用工具,它可以扫描任何32位或64位Windows模块(EXE,DLL,OCX,SYS等),并建立所有相关模块的分层树形图。Dependency Walker对于排除加载和执行模块故障错误非常有用。 Dependency Walker能检测出许多常见应用问题,例如缺少模块,无效的模块,导入/导出不匹配,循环依赖错误,不匹配的机器类型模块和模块初始化失败。所以对于程序员来说,Dependency Walker(以下简称Depends)是一项必备技能。
下载地址:http://www.dependencywalker.com/
下载后打开depends,将exe或dll拖到其中即可。
Dependency Walker 在win10上运行 会有无响应的问题, 主要原因是depends.exe运行时要搜索的路径太多,这时可以通过下面两种方式来解决。
手动设置PATH
Step1:创建run_depends.txt文件
Step2:输入以下内容(两行)
set PATH=""
"D:\Tools\depends\depends22_x64\depends.exe"
注意上面的exe路径要根据实际情况输入。路径不要有中文
Step3:将run_depends.txt后缀名改为bat,即成为run_depends.bat脚本文件。
Step4:双击运行run_depends.bat,运行之后,可以看到depends运行界面,然后把你要分析的dll或者exe拖进去,大概10秒左右能出来结果,比之前看起来卡死的情况快多了。
但是,这样的操作终究有些不自然。难道,Dependency Walker 本身就不支持设置搜索路径吗?
在Dependency Walker设置PATH
简单的浏览了一遍 Dependency Walker 的菜单,发现可以通过 Options -> Configure Module Search Order… 来设置模块搜索顺序及搜索路径。
设置界面如下图所示,大家根据自己需要进行设置。
3. 总结
dumpbin只能查看一级依赖,如果需要一次查看所有依赖则需要使用Dependency Walker。
Dependency Walker 可以自定义搜索目录,合理设置搜索目录,会大大提高搜索速度!
默认情况下,Dependency Walker 会搜索 PATH 指定的路径,所以也可以通过修改 PATH 环境变量的值达到相同的效果。
如果长时间(大概 5 秒钟)没有处理界面消息的话,界面就会无响应。
VS2017 程序在新电脑环境出现 “无法加载DLL “xxxx.dll“:找不到指定模块。”(异常来自 HRESULT:0x8007007E)
https://www.cnblogs.com/bianchengnan/p/13917836.html