2014-11-05 85 views
0

我必須使用Visual Studio 2012在C#應用程序中調用示例MFC視圖。我使用C++/CLI項目並從C#中調用C++類。要做到這一點我必須使用此行代碼

AFX_MANAGE_STATE(AfxGetStaticModuleState()); 

這將調用MFC DLL資源的資源句柄,而不是默認的資源(在C#exe文件)。在MFC視圖運行正常,但出現的異常值(以C消息框):

Debug Assertion Failed on \$InstallDir\VC\atlmfc\src\mfc\olelock.cpp line 62 

這裏是我的安裝目錄檢查源代碼:

void AFXAPI AfxOleUnlockApp() 
{ 
    AFX_MODULE_STATE* pModuleState = AfxGetModuleState(); 
    ASSERT(pModuleState->m_nObjectCount != 0); 
    if (InterlockedDecrement(&pModuleState->m_nObjectCount) == 0) 
    { 
     // allow application to shut down when all the objects have 
     // been released 
     ::AfxOleOnReleaseAllObjects(); 
    } 
} 

我怎樣才能避免這種說法對嗎?感謝您的支持。

+0

什麼時候斷言發生?在關機時?在啓動?顯示MFC視圖後?顯示MFC視圖後顯示 – 2014-11-05 19:46:32

+0

。在這種情況下,視圖顯示在WPF中的網格中。 – 2014-11-06 01:57:56

回答

0

這個Assertion只是說你比AfxOleLockApp更經常地調用AfxOleUnlockApp。

爲特定功能設置斷點。檢查誰叫鎖定/解鎖。可能有物體被釋放不止一次......