接连几天的阴雨天气,现在感觉很闷热,闷热的让人难受。不过现在正处于伏天,这样的天气也是正常的。
今天学习了什么新东西呢?来总结一下吧,一是加深一下印象,二是留下一段记忆。
一、DLL的导出方式。这里只把代码贴出来了。
extern __declspec(dllexport) VOID MsgBox(wchar_t *szMsg);
extern表示该函数以C方式导出,因为DLL,是以C++的方式创建的,后缀为.CPP,如果以C++的方式导出,编译后函数名字会被粉碎,导致动态调用该函数的时候极为不便。
__declspec(dllexport)的作用是声明一个导出函数,将该函数从本DLL中开发提供给其他的模块使用。
二、DLL的调用方法之一(静态调用)
首先,将编译好的DLL和LIB文件放在调用DLL的目录下。
#pragma comment(lib,"dls.lib")
extern "C" VOID MsgBox(wchar_t *szMsg);
其中dls.lib是编译DLL的lib文件。上面工作完成之后开始调用。
MsgBox(L"静态调用DLL");
三、DLL的调用方法之二(动态调用)
首先,将编译好的DLL和LIB文件放在调用DLL的目录下。
typedef VOID(*PFUN) (wchar_t *);
PFUN 这个名称是自己,自定义的。
//载入指定的动态连接库,并将它映射到当前进程使用地址的空间。
HMODULE hMoudle = LoadLibrary(L"dls.dll");
PFUN pFunMsg = (PFUN)GetProcAddress(hMoudle, "MsgBox");
pFunMsg(L"动态调用DLL");