1.引言:

调用一个dll,分为静态调用和动态调用。静态调用的话,需要编译dll时产生的一个lib文件,而动态调用的话,需要使用LoadLibrary加载dll,然后用GetProcAddress去依次获取每个需要使用的函数地址。而某些第三方的库,因为某些原因,只给了你dll,而没给你对于的lib(比如OD2.0刚出来的时候,就没有编写插件的lib),于是就有了本文了,本文会描述整个构造的过程。

2.基础:

构造一个lib,首先要明白lib的分类,lib我的了解有两种,一种是静态库(所有的代码都包含在其中,编译器链接的时候会链接到可执行程序中,运行时不依赖dll),一种是导入库(只含有dll导出函数的一些信息,链接的时候,用于写EXE的导入表的,而不包含可执行代码,执行时,需要dll的支持,否则会弹出初始化失败)。我的描述可能有不对的地方,具体可以去百度之。

Lib的生成,主要还是依靠编译的工具,一个是dumpbin.exe,另一个是lib.exe。利用这两个工具即可从dll导出其对应的lib。我要做的是,修补一下生成的lib文件,因为有些特殊的情况,没办法直接生成lib,等下会描述这种情况。关于那两个工具使用,可以参考

http://www.cnblogs.com/dongzhiquan/archive/2009/08/04/1994764.html

描述的很详细了,我就不多说了。


具体去我博客看下,或者下载pdf版本的看,编辑这个实在太累

http://netsdspace.com/?p=11




估计文章写的有点乱,第一次写这么长的东西,将就看吧。我估计,我还会写下一篇,讲怎么给od2.0版本生成编写插件的lib的。那个原理和这个是一样的,只是导出的函数太多了,纯手工的话,确实很悲剧,好了,这都是后话了,下篇再说了。

上传的附件 给Dll制作导入的lib.pdf
lib_Demo.zip