先声明, 以下针对都是win32的库.
我们可能想看看一个动态库或者一个静态库导入和导出了哪些函数.
有时候, 你想研究一些库,但是又没有这些库的源代码, 那么可以看看这些库都用到了哪些外部API, 这样你就可以大概猜测到里面的实现了.
或许, 某一天, 你编译链接的时候告诉你一个link error, 错误类似:
error LNK2001: unresolved external symbol…
而你发现已经在工程中导入了这个符号对应的库. 可能你就想要看看, 这个静态库导出的符号到底是什么样子.
好了, 有了这些个需求, 接下来我们谈谈怎么来满足它们.
有两个方法, 或者说有2个工具.
1. depends工具.
2. dumpbin.
depends
这个工具在你安装了vc6之后,就有了. 通过 开始->程序->Microsoft Visual C++ 6.0->Microsoft Visual C++ 6.0 Tools->里面找到这个工具.
它只能实现看动态库导出的函数. 下面说说怎么看动态库导出的函数:
打开depends, 然后直接打开你想要了解的dll就可以. 这样你可以看到所有它导出的函数.
dumpbin
这个工具也是在安装完vc6之后的一个工具. 这个工具比较强大, 它可以完成上面我们所提到的过的所有需求.运行方式是通过控制台(命令行)来运行.
查看动态库导出的函数:
在命令行敲入
dumpbin -exports test.dll
让后回车, 这时候控制台会列出所有的导出的函数, 如果这个库中导出的函数很多, 则很有可能控制台无法全部显示, 这时候可以通过转储的方式, 存到一个txt文件里
dumpbin -exports test.dll > D:/test_dll_export.txt
意思是把结果存到d盘的test_export.txt文件里.
查看动态库导入的函数:
dumbpin -imports test.dll > D:/test_dll_import.txt
查看静态库的导入符号:
dumpbin -symbols test.lib > D:/test_lib_export.txt
未完, 待续…
版权所有,禁止转载. 如需转载,请先征得博主的同意,并且表明文章出处,否则按侵权处理.