MFC编程上的\ $ InstallDir \ VC \ atlmfc \ src \ mfc \ olelock.cpp第62行调试断言失败

时间:2014-11-05 02:57:45

标签: c# c wpf mfc

我必须使用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();
    }
}

我该如何避免这种断言?感谢您的支持。

1 个答案:

答案 0 :(得分:0)

这个断言只是说你调用AfxOleUnlockApp比AfxOleLockApp更频繁。

将断点设置为特定功能。检查谁锁定/解锁。可能不止一次释放的对象......