工具:dumpbin.exe : COFF DLL 动态库依赖库 :VS工具

Posted 天有行-地无迹-千秋怎堪一剑扫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了工具:dumpbin.exe : COFF DLL 动态库依赖库 :VS工具相关的知识,希望对你有一定的参考价值。

摘要:

  1. 速度快,不会像depend.dll 那样卡顿。
  2. 但是无法查看调用dll 调用的dll,所以不如depend.exe 好用。
  3. 查看方式不如depend.exe 直观。

总结:** 可能不怎么用**

介绍:

dumpbin.exe是微软二进制文件转储器。显示有关通用对象文件格式 (COFF) 的二进制文件的信息。
可以使用 DUMPBIN 检查 COFF 对象文件、 COFF 对象、 可执行文件和动态链接库 (Dll) 的标准库。

参考:

DUMPBIN options -MSDN-官网:

位置:

文件路径: C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Tools\\MSVC\\14.16.27023\\bin\\Hostx64\\x64
VS2017 的安装路径下面。
或者通过vs2017命令窗口

命令:

  1. DUMPBIN /ALL “E:\\neuvition\\neusdk\\sdk\\lib\\neuv_win_sdk.dll”>G:\\uxtheme.txt

转换后的txt文件比dll大的多,猜测是不是把dll内容解析并转换位文本了。

  1. 查看调用的dll
    DUMPBIN -imports “E:\\具体路径****.dll”>G:\\uxtheme2.txt

打印了dll的信息,但是量比较多,查看不直观。
并且似乎不能现实调用的dll的再调用的dll。

  1. 导出信息
    DUMPBIN /EXPORTS “E:\\具体路径****.dll”>G:\\uxtheme3.txt
    可以导出dll中export 的函数名称

DLL:导出LIB,修改名字

用VS工具从dll导出lib

VS开发工具提供了两个命令行工具,一个是dumpbin.exe,另一个是lib.exe。利用这两个
工具即可从dll导出其对应的lib。

  1. 在VS命令行工具中执行:

    dumpbin /exports yourdll.dll > yourdll.def 
  2. 编辑yourdll.def文件,使之格式与.def文件格式一致。比如:

    LIBRARY yourdll.dll
    EXPORTS 
    fn1
    fn2
  3. 在命令行执行:

    lib /def:yourdll.def /machine:x64 /out:yourdll.lib

pexports工具

上述第1、2步中,导出的def文件需要修改后才能用来导出lib文件。这两步可以使用pexports一次解决:

pexports yourdll.dll > yourdll.def

pexports生成的def文件已经是标准格式,可以直接用lib工具生成lib文件。

dll库改名

有了上面的方法就可以给dll库改名了,假设想把库the_old_name.dll改为name.dll:

  1. 先用dll导出def:

    pexports the_old_name.dll > name.def
  2. 修改def中LIBRARY后的名称

    LIBRARY the_old_name.dll --> LIBRARY name.dll
  3. 用修改后的def导出新的lib

    lib /def:name.def /machine:x64 /out:name.lib

    用上面的name.lib作为导入库的程序,会以name.dll作为依赖库。再将the_old_name.dll改为name.dll就可以了。

以上是关于工具:dumpbin.exe : COFF DLL 动态库依赖库 :VS工具的主要内容,如果未能解决你的问题,请参考以下文章

将dumpbin从VS中抠出来,并使用dumpbin查看exe和dll库的依赖关系

关于DLL调试的两个工具(dependency walker和dumpbin.exe)

DLL:导出LIB,修改名字

dumpbin-link-mspdb60

利用VS2010工具,反编译C++的dll

无法使用 Visual Studio 导出 C++ dll