看看我们的动态库和静态库都导入了和导出了什么函数(win32)

先声明, 以下针对都是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

 

 

 

未完, 待续…

 

版权所有,禁止转载. 如需转载,请先征得博主的同意,并且表明文章出处,否则按侵权处理.

    分享到:

Leave a Reply

Your email address will not be published. Required fields are marked *