11、dll 在程序中的加载方法

本文介绍了DLL在程序中的两种加载方法:runtime提供和静态提供。runtime提供涉及在程序运行时修改模块内容以实现新功能,包括复制DLL、加载copy.dll,并通过检查原生DLL的修改时间来确保一致性。静态提供则使用预加载的DLL,通过macro将整个DLL集成到cpp文件中。在使用DLL功能时,需要通过指针获取函数地址。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一般程序要使用到dll中的函数,但是实际的dll中函数地址 的提供方法分两种,

runtime提供dll

所谓runtime提供dll,就是在程序运行时,通过修改程序中某个已载入的module的内容,让程序展现修改后的新功能。

方法:
程序运行过程中,先把需加载的dll复制一份,命名为copy.dll,把copy.dll载入到内存给程序使用。

所以,在我们自己在编写原生dll的时,这就发生了第一个文件修改操作;在程序中运行用到了copyfile操作去产生一个copy.dll文件,这是二个文件修改操作;

那么,思路就来了,我们在编写程序时,可以写2个dll文件操作的函数,一个是loadDLL,一个是UnLoadDLL。并且,每次在使用loadDLL之后,都要加一个函数,叫做检验原生DLL是否被修改函数,如果原生DLL被修改,那么copy.dll也要跟着修改;如果原生DLL没发生修改,那么你这个程序就要继续使用copy.dll中的内容;

其中,检验原生DLL是否被修改的函数,可以用文件修改时间实现,因为每次修改文件,都会留下一个新的时间标记。通过比较这个标记,就知道那个文件在最新的时间内被修改了。

Copyfile("原生.dll","copy.dll");
loadDLL("copy.dll");

while(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值