window API 动态库隐式加载方式。
//库函数定义
int add(int a,int b)
{
return a+b;
}
用户需要拿到库文档,文档记录了dll内的每个函数名和参数,利用函数指针指向库函数进行使用。
优点:dll库文件可以放入指定文件夹;无需引用头文件。
缺点:参数需要遵守文档函数内参数规则。 代码运行耗时(频繁加载卸载>加载卸载一次>显式式加载)
HINSTANCE hInst=LoadLibrary("dll_name.dll");//加载动态库获得句柄
typedef int(*fun_ptr)(int a,int b);//定义库内函数的指针
fun_ptr fp=(fun_ptr)GetProcAddress(hInst,"add");//获得函数句柄
FreeLibrary(hInst);//卸载库
显式加载优缺点则反之。
显示加载还需要头文件和.lib文件。
#pragma comment(lib, "dll_name.lib")