以上三篇"DLL学习"都是隐式加载DLL
那么什么是显式加载DLL呢?
只要一个dll文件,不用.h,也不要用link对.lib链接.
HMODULE LoadLibrary(LPCTSTR lpFileName);返回模块的句柄.
获取此动态链接库中的导出函数的地址.
FARPROC GetProcAddress( HMODULE hModule, LPCSTR lpProcName);
在DllTest工程中显式加载dll,访问其导出的add函数
void CDllTestDlg::OnBtnAdd()
{
HINSTANCE hInst;
hInst=LoadLibrary("DLL1.dll");
typedef int (*ADDPROC)(int a, int b);
ADDPROC Add=(ADDPROC)GetProcAddress(hInst, "?add@@YGHHH@Z");
if(!Add)
{
MessageBox("获取函数地址失败!");
return;
}
CString str;
str.Format("5+3=%d",Add(5,3));
MessageBox(str);
}
动态加载(显式)只在需要的时候加载DLL,隐式链接方式是程序一启动就全部加载支内存中.
显式加载DLL详解
本文详细介绍了显式加载DLL的方法,包括使用LoadLibrary和GetProcAddress函数来动态加载DLL及调用其中的导出函数。通过具体实例展示了如何在不依赖.h文件和.lib文件的情况下,实现对DLL的动态加载。
4万+

被折叠的 条评论
为什么被折叠?



