前言
工作或者学习中,经常使用到第三方动态库,静态链接确实是个简单的方法,但由于很多原因(无lib文件,想把动态库放到子目录等),我们需要使用到动态加载!
传统的方法
对于调用简单的动态库或者很少函数,可使用传统方法,下面以MessageBox为例
#include <tchar.h>
#include <windows.h>
int main(){
//加载user32.dll
// 因为MessageBox()在user32.dll中导出
HMODULE hdll = LoadLibrary(_T("user32.dll"));
//如果加载成功则获取MessageBox函数的地址。
if (hdll) {
//首先定义一个用于指向MessageBox函数的函数指针类型
typedef int(__stdcall *pfunc)(HWND, LPCWSTR, LPCWSTR, UINT);
//用GetProcAddress()获取其地址
pfunc pmsgboxw = (pfunc)GetProcAddress(hdll, "MessageBoxW");
//通过函数指针调用MessageBox
pmsgboxw(0, _T("hello world!"), _T("MessageBox"), MB_OK);
}
return 0;
}