LIB和DLL的引用

DLL的LIB:记录了DLL里面输出的函数和类

项目链接LIB时:会读LIB里面exported的内容,在项目的生成文件(exe/dll,下文指的是exe)生成导入地址表(IAT),里面包含:【项目PE文件引用的函数(不引用的不在IAT中)- 对应DLL里的位置】;

如果是在项目配置里面链接LIB的话,在项目PE文件装入内存时,Windows 装载器才将iat里面的DLL 装入(动态连接);如果是在延迟链接的话,就在dll相关函数调用装载相应的DLL(延迟加载DLL);

 

DLL载入内存时,将完善PE文件的IAT,使IAT里面对应真正在内存中的dll函数的地址,函数调用时,都使用IAT的地址。

如果IAT表里面没有这个函数(缺少lib的dll),当dll载入时,要通过getprocaddress(函数名)来读dll的EAT,去调用函数。

 

所以一个PE文件链接了多少个DLL,是看它的IAT的。和解决方案没有关系。

转载于:https://www.cnblogs.com/yiii/p/6389148.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值