下面的导出函数在动态库的app类的实现文件中添加,否则对话框关闭时报断言错误。
// 定义导出接口
extern "C" __declspec(dllexport) IHpDllWin* GetSelOrgControl()
{
// 切记,此处需要加下面这行代码,不然对话框显示不出来。
AFX_MANAGE_STATE(AfxGetStaticModuleState());
IHpDllWin *ph = App_SelOrgDlg::instance();
return ph;
}
四:调用方式
采用动态方式调用该动态库,调用步骤如下:
1.加载动态库
HINSTANCE m_hDll = LoadLibrary("SelectOrgControl.dll");
if (NULL == m_hDll)
{
MessageBox("加载 SelectOrgControl.dll 失败");
}
2.获取导出函数指针
typedef IHpDllWin* (*hpDllFun)();
hpDllFun pShowDlg = (hpDllFun)GetProcAddress(m_hDll,"GetSelOrgControl");
if (NULL==pShowDlg)
{
MessageBox("DLL中函数寻找失败");
return;
}
3.获取导出类对象指针