在MFC动态库函数写好后需要在.def文件里面 加上你的函数编号
; MFCRegDll.def : Declares the module parameters for the DLL.
LIBRARY "MFCRegDll"
DESCRIPTION 'MFCRegDll Windows Dynamic Link Library'
EXPORTS
; Explicit exports can go here
ShowDlg @1
比如我们在DLL里面创建了一个对话框 函数实现如下:
void ShowDlg(){
AFX_MANAGE_STATE(AfxGetStaticModuleState());//这里必须要加上 不加上资源会调用错误
CRegDlg dlg;
dlg.DoModal();
}
我们在另外一个程序里面调用
typedef void (* SHOWDLG)();
void CTestDlgDlg::OnTest()
{
//加载 如果在DLL里面不加上
//AFX_MANAGE_STATE(AfxGetStaticModuleState());MFC找资源所在的HINSTANCE时,会获取
//当前EXE的HINSTANCE,如果找到那也是错误,找不到也会报错,如果添加AFX_MANAGE_STATE就会将当前资源替换成DLL资源
HMODULE hInst=LoadLibrary("MFCRegDll.dll");SHOWDLG ShowDlg=(SHOWDLG)GetProcAddress(hInst,"ShowDlg");ShowDlg();//释放FreeLibrary(hInst);}