解析LoadLibrary,GetProcAddress,FreeLibrary

本文详细介绍了在Windows环境下如何使用LoadLibrary、GetProcAddress和FreeLibrary三个API函数进行动态链接库(DLL)的操作,包括加载DLL、获取函数地址以及释放DLL。通过示例代码展示了如何声明和调用DLL中的函数,强调了在程序中监测DLL返回值的重要性,以及DLL与主程序之间的交互限制。同时提醒开发者在Windows NT 4或Windows 2000上运行时,务必提供DLL的完整路径。
摘要由CSDN通过智能技术生成

 

GetProcAddress(Hinstance,lpname)用来获取指定的动态连接库函数的地址
Hinstance为由LoadLibrary返回的模块句柄,lpname为文件名/函数名,返回值,成功返回动态连接库的地址,失败返回NULL,
FreeLibrary(Hinstance),Hinstance为由LoadLibrary返回的模块句柄,功能是:释放动态连接库!
动态引入方式就是使用Windows的两个API即LoadLibrary和GetProcAddress,前者用于获得DLL的句柄,后者用于获得DLL中例程的地址,这种方式之所以被称为动态的,是因为它不需要在程序的开始处把要引入的例程全部列出,只要在调用前引入,并且LoadLibrary可以指定不同的DLL,GetProcAddress可以指定不同的例程,最重要的是如果指定的DLL出错,最多是API调用失败,但不会导致程序终止,因此我们应该在程序中监视DLL的返回值,根据返回值作出相应的处理。程序示例如下: 
Var LibHandel:Thandlel;
LibHandle:=LoadLibrary(Pchar(DLLname));
以上首先声明一个DLL的句柄,然后用LoadLibrary获得DLL的句柄,其中DLLName是DLL的文件名,由于LoadLibrary是Windows的API,因此调用时要强制转换成Pchar类型。
Var Getcount:Function(Index:integer):Integer;StdCall;
@Getcount:=GetProcAddress(LibHandle,’’GetCount’’

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值