gpt4 book ai didi

dll - AfxGetInstanceHandle()在常规mfc dll中返回null

转载 作者:行者123 更新时间:2023-12-04 02:50:42 26 4
gpt4 key购买 nike

应用程序加载常规dll。此dll中的每个函数都包含AFX_MANAGE_STATE(AfxGetStaticModuleState())。在预处理器定义中包含宏_USRDLL和_​​AFXDLL。例如,从常规dll(mydll.dll)导出功能:

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

最佳答案

最好的方法是将您作为参数接收的句柄存储在DllMain中的全局变量中,或者,如果它是MFC dll,则它应该已经存储在CWinApp :: m_hInstance中。

关于dll - AfxGetInstanceHandle()在常规mfc dll中返回null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8480089/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com