动态链接库(也称为DLL,即为“Dynamic Link Library”的缩写)是Microsoft Windows最重要的组成要素之一,打开Windows系统文件夹,你会发现文件夹中有很多DLL文件,Windows就是将一些主要的系统功能以DLL模块的形式实现。
一 使用dll文件要使用到托管和非托管的概念,
1.托管是基于.net平台使用的。
2.非托管是基于win32平台/action x组件使用的。
本次讲解是基于.net平台,即就是基于托管中使用,具体托管和非托管需要自行查询相关资料。
二 C#动态调用DLL中的函数
C#中使用DllImport是不能像动态load/unload assembly那样,所以只能借助API函数了。
①LoadLibrary(或MFC 的AfxLoadLibrary),装载动态库。
②GetProcAddress,获取要引入的函数,将符号名或标识号转换为DLL内部地址。
③FreeLibrary(或MFC的AfxFreeLibrary),释放动态链接库。
它们的原型分别是:
HMODULE LoadLibrary(LPCTSTR lpFileName);
FARPROC GetProcAddress(HMODULE hModule, LPCWSTR lpProcName);
BOOL FreeLibrary(HMODULE hModule);
![bc2292e07993b58957bf2732cc8a39f5.png](https://i-blog.csdnimg.cn/blog_migrate/ce5cd35a21fb59a379b20948d654f5d9.jpeg)