.h头文件、 .lib库文件、 .dll动态链接库文件的关系

之前最头疼的问题,一定要查清楚。

1,.h是函数声明的接口,仅仅是接口
2,.dll中有函数的可执行代码
3,.lib分两种情况,分别对应静态链接(lib是静态库)与动态链接(动态链接的导入库import library)

然后:如果程序是静态链接,那么只需要h与lib文件,lib文件中含有函数代码;如果是动态链接,那么lib作为导入库,其中没有函数实现代码,只有函数的地址表等信息,方便在dll文件中找到函数的实现。他起到桥梁作用。

.h是编译时需要的,.lib是链接时需要的,.dll是运行时候需要的。

dll的现实链接与隐式链接:
对于dll有没有对应的lib导入库,分为两种情况,要是有lib,那么程序会直接隐式加载,要是没有lib,那么就需要手动LoadLibrary调入dll文件,然后再GetProcAddress获得函数地址,即显式链接。
所以说,有了lib,只需要链接导入库后直接利用函数声明进行调用即可,没有lib就需要显氏地调用了。

若生成了dll,则肯定会生成lib文件,如果要完成代码的编译与链接,只需要.h .lib就够了,如果要使动态链接库的程序运行起来,那么就需要dll文件了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值