MFC拡張DLLをプログラムしましたが、それを入力してエクスポートされた関数を使用しても問題ありませんでした。アサーションエラー@ dllmodul.cpp#230
しかし、DLLは、DLLを解放する時に、私は、アプリケーションを終了すると、それは、アサーションエラーを投げた後、私はエラーを次のよう、それはこの時に失速が見つかりました:
extern "C"
BOOL WINAPI RawDllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID)
{
hInstance;
if (dwReason == DLL_PROCESS_ATTACH)
{
#ifdef _AFXDLL
// make sure we have enough memory to attempt to start (8kb)
void* pMinHeap = LocalAlloc(NONZEROLPTR, 0x2000);
if (pMinHeap == NULL)
return FALSE; // fail if memory alloc fails
LocalFree(pMinHeap);
// set module state before initialization
_AFX_THREAD_STATE* pState = AfxGetThreadState();
pState->m_pPrevModuleState = AfxSetModuleState(&afxModuleState);
}
else if (dwReason == DLL_PROCESS_DETACH && !__mixedModuleStartup)
{
// restore module state after cleanup
_AFX_THREAD_STATE* pState = AfxGetThreadState();
// ************************************************
VERIFY(AfxSetModuleState(pState->m_pPrevModuleState) ==
&afxModuleState); // Where Error occurred
// ************************************************
DEBUG_ONLY(pState->m_pPrevModuleState = NULL);
#endif //_AFXDLL
}
return TRUE;
}
私はMFC Ext DLLを使用しましたが、AFX_MANAGE_STATEはMFC Reg DLLでのみ有効であることを覚えています。 – Metalbrick
AFX_MANAGE状態は、MFCユニバースの外側から境界内に境界を越えるたびにも必要です。主張は、あなたの国家が何らかの形で管理されていないことを伝えています。 –