DLL 生成 Lib

    当我们编译生成DLL时,编译器会自动为我们生成对应的lib文件。但这个lib可不是static library静态库,而是import library导入库。该文件包含了DLL函数名,DLL导出函数名或标号,但并不含实际的代码。而我们只需要在程序中链接该lib,然后再声明下DLL中函数,就可以直接调用该函数,因为系统会自动加载该DLL。此时,链接该lib的效果实际上是在程序的导入表中添加该DLL,运行时需要将该DLL放在当前目录或系统目录中。

    使用DLL有两种方法:

        一种显示链接,即用loadlibrary和GetProcAddress来获取DLL中函数地址。

        一种是隐式链接,如前面所述,使用编译DLL生成的lib,来自动加载DLL。

    但若我们没有DLL源码,则想得到对应的import lib就需要手动生成:

        1.使用pexports或是微软自带的dumpbin导出dll的def文件。推荐使用pexports,可以直接导出不需要修改的def文件:

                pexports.exe xxx.dll > xxx.def  


    2.使用vc自带的lib程序,调用LIB /DEF:xxx.def /MACHINE:IX86 /OUT:xxx.lib即可。


DLL生成static library

    上述方法都需要依赖DLL,但如何用DLL生成static library,扔掉DLL呢 ?

    找到个工具DLL to Lib 3.00,用了下,虽然可以编译链接通过,但执行时发生错误,待详细研究。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值