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