我必须使用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


这是我在安装Dir时检查的源代码:

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();
    }
}


我如何避免这种主张?谢谢您的支持。

最佳答案

该断言仅表示与调用AfxOleLockApp相比,您更频繁地调用AfxOleUnlockApp。

将断点设置为特定功能。检查谁呼叫锁定/解锁。可能有不止一次释放的物体...

关于c# - 在MFC编程上的\$ InstallDir\VC\atlmfc\src\mfc\olelock.cpp第62行上,调试声明失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26748969/

10-12 12:36