动态链接库(也称为dll,即为“dynamiclinklibrary”的缩写)是microsoftwindows最重要的组成要素之一,打开windows系统文件夹,你会发现文件夹中有很多dll文件,windows就是将一些主要的系统功能以dll模块的形式实现。
一使用dll文件要使用到托管和非托管的概念,
1.托管是基于.net平台使用的。
2.非托管是基于win32平台/actionx组件使用的。
本次讲解是基于.net平台,即就是基于托管中使用,具体托管和非托管需要自行查询相关资料。
二c#动态调用dll中的函数
c#中使用dllimport是不能像动态load/unloadassembly那样,所以只能借助api函数了。
①loadlibrary(或mfc的afxloadlibrary),装载动态库。
②getprocaddress,获取要引入的函数,将符号名或标识号转换为dll内部地址。
③freelibrary(或mfc的afxfreelibrary),释放动态链接库。
它们的原型分别是:
hmoduleloadlibrary(lpctstrlpfilename);
farprocgetprocaddress(hmodulehmodule,lpcwstrlpprocname);
boolfreelibrary(hmodulehmodule);