22.3.4 MFC常规DLL的调用
创建完MFC常规DLL后,就可以在应用程序中调用它了。MFC常规DLL既可以被MFC应用程序调用,也可以被非MFC应用程序调用。调用MFC常规DLL的方式有两种,一种是静态引用,通过加载静态链接库的lib文件实现。一种是动态引用,动态加载DLL后,获取要调用的函数地址,然后执行相应的函数。本节以动态加载的方式演示如何调用MFC常规DLL。代码如下:
- void CRegMFCDllTestDlg::OnButtonInvokedll()
// 调用DLL - {
- typedef void (*pFunction)(void);// 定义函数变量
- HINSTANCE hLibrary; // DLL句柄
- hLibrary = LoadLibrary("RegMFCDLLSample.dll");
// 装载DLL - if (hLibrary == NULL) MessageBox("DLL加载
失败"); // 提示错误信息 - pFunction pShowDlg = (pFunction)GetProcAddress
(hLibrary,"ShowDlg"); - // 执行函数
- if (NULL==pShowDlg) MessageBox("DLL中不存在指
定的函数"); // 输出提示 - else pShowDlg();
- }
上面代码定义了函数指针变量pFunction。调用LoadLibrary()函数装载要执行的DLL,此处是RegMFCDLLSample.dll。如果加载成功,使用GetProcAddress()函数获取要执行的接口函数的地址,如果查找到函数,则执行。程序运行的效果如图22-12所示。
|
| 图22-12 MFC常规DLL调用实例运行效果图 |