哪些命令行工具存在以recursion方式查找所有DLL依赖关系? 我试过用Visual Studio来的dumpbin和Dependency Walker (又名Depends.exe),但是dumpbin只能find第一级的依赖关系,而Dependency Walker的输出并不是真正的计算机友好。
尝试/oc:FILENAME
选项来依赖,写一个逗号分隔的值文件。 这看起来像由机器解析比由/ ot:FILENAME /选项生成的“自由格式”文本文件更容易解析。
依赖Walker有许多选项,包括输出到文件选项。 其中之一是/oc:<path>
,将输出写入CSV文件 ,该文件很容易被其他工具解析,甚至只是导入到电子表格应用程序中。
根据你所需要的依赖关系,你可能实际上也有跨平台的工具来做到这一点 – 例如CMake fixup-bundle可以将所有检测到的非系统依赖项复制到目标(可执行文件或共享库)的位置,即使在Windows上。 文档没有清楚地解释它,但是我现在已经在一个跨平台的项目中使用它了。
使用/oc:<path>
选项, Dependency Walker为您提供一个易于解析的CSV文件 。 如果您还需要库的路径,则还需要使用-f 1
选项。 如果需要复制库(例如,制作可执行文件的可分发版本),则可能需要执行此操作。
不幸的是,在depends.exe的输出中,库的路径被转换为小写,并且DLL名称被转换为大写。 例如,
C:\ QTSDK \桌面\ QT \ 4.7.4 \ MinGW的\ BIN \ QTCORE4.DLL
当图书馆实际位于:
C:\ QTSDK \桌面\的Qt \ 4.7.4 \ MinGW的\ BIN \ QtCore4.dll
似乎没有办法让depends.exe正确地报告路径,这是可耻的。