3
应用程序加载常规dll。此dll中的每个函数都包含AFX_MANAGE_STATE(AfxGetStaticModuleState())。预处理器定义中包含宏_USRDLL和_AFXDLL。例如,从常规DLL(MYDLL.DLL)导出功能:AfxGetInstanceHandle()在常规mfc dll中返回null
BOOL RM_GetModule(IRMPage** ppInterface)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
HINSTANCE hInst = AfxGetInstanceHandle(); //**return NULL**
........
}
应用:
BOOL CReMain2Dlg::OnInitDialog()
{
CDialog::OnInitDialog();
..........
HINSTANCE hmCurrentModule;
if((hmCurrentModule = AfxLoadLibrary("mydll.dll"))){
(FARPROC&)pPageItem->pfGetModule = GetProcAddress(
hmCurrentModule, "RM_GetModule");
pPageItem->pfGetModule(&(pPageItem->pPage)); //call
..........
}
}
该项目于2010年转出6个工作室在6 AfxGetInstanceHandle()返回正确的值。 GetLastError()返回0.为什么AfxGetInstanceHandle()返回NULL?如何解决它? vs2010_sp1,win7_x64