depends的使用
目录Dependency Walker(depends.exe)完整作用一、核心定位二、主要功能1. 递归查看所有 DLL 依赖关系2. 快速定位缺失 DLL(最常用场景)3. 区分 32 位 / 64 位架构不兼容问题4. 查看导出函数、导入函数5. 排查运行库、编译链接问题6. 检测延迟加载 DLL7. 输出完整依赖日志三、典型使用场景四、局限性(补充)Depends 判断依赖库缺失的完整识别方法一、界面颜色标记(最直观)二、底部日志窗口提示文字三、模块属性面板信息四、特殊容易混淆的场景1. 32/64 位不匹配(看起来像缺失)2. 延迟加载 DLL3. 系统 api-set 虚拟 dll(Windows 通用 CRT 库)五、快速排查步骤示例验证一、未找到库,库丢失二、找到库,但库内部还有缺失依赖。(故意屏蔽这段代码,库缺失)三、依赖正常,不存在库缺失和丢了的问题四、窗口分四部分介绍:下载地址:Dependency Walker(depends.exe)完整作用一、核心定位Windows 专用 PE 文件依赖分析工具,只解析.exe、.dll、.ocx、.sys这类 Windows 程序 / 动态库,相当于 Windows 下可视化版的依赖查询工具。二、主要功能1. 递归查看所有 DLL 依赖关系自动逐层展开一级、二级、三级依赖,树形展示: 程序 A → 依赖 B.dll → B 又依赖 C.dll、D.dll 能看清整套程序需要哪些系统库、第三方库。2. 快速定位缺失 DLL(最常用场景)用颜色区分状态:红色:电脑里完全找不到该 DLL 文件;黄色:文件存在,但它自身还有下级依赖缺失; 打开报错 “丢失 xxx.dll” 的 exe,一眼就能看出缺哪个库。3. 区分 32 位 / 64 位架构不兼容问题如果 DLL 位数和程序不匹配,工具会标记异常,很多人明明有 dll 却打不开程序,就是这个原因。4. 查看导出函数、导入函数导出:这个 DLL 对外提供哪些函数给别的程序调用;导入:当前程序需要调用外部 DLL 的哪些接口; 逆向、二次开发、排查函数找不到报错时用。5. 排查运行库、编译链接问题针对 VC/C++ 编译的程序:检测是否缺 VC++ 运行库(msvcr、api-ms-win-crt 系列);区分/MD动态链接、/MT静态链接带来的依赖差异; 解决程序发给别人打不开的问题。6. 检测延迟加载 DLL带问号标记延迟加载库,这类库程序启动时不加载,运行到对应功能才加载,缺失会导致运行中途崩溃。7. 输出完整依赖日志底部日志窗口记录加载路径、报错信息,可以复制保存用于排错。三、典型使用场景双击 exe 提示 “缺少 xxx.dll”,用 depends 找缺失库;自己编译的 Qt/OpenCV/VC 程序,发给别人无法运行,排查依赖;判断程序是 32 位还是 64 位,以及配套 dll 位数;开发调试:确认程序有没有多余依赖、不必要的系统库;简单逆向:查看 dll 提供哪些接口函数。四、局限性(补充)只支持 Windows PE,不支持 Linux so、Java jar、macOS 程序