我必须使用Visual 2012在C#应用程序中调用示例MFC视图。我使用C++/CLI项目,并从C++调用C#类。要做到这一点,我必须使用这一行代码
AFX_MANAGE_STATE(AfxGetStaticModuleState());
这将调用MFC资源的资源句柄,而不是默认资源(C#上的exe文件)。MFC视图运行正常,但它会出现异常(作为C消息框):
Debug Assertion Failed on \$InstallDir\VC\atlmfc\src\mfc\olelock.cpp line 62
下面是我在install上检查的源代码:
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();
}
}
我如何才能避免这种说法?谢谢您一直鼓励我。
发布于 2014-11-05 13:09:11
这个断言简单地说,您调用AfxOleUnlockApp比调用AfxOleLockApp更频繁。
将断点设置为特定函数。检查谁呼叫锁定/解锁。可能有不止一次释放的物体..。
https://stackoverflow.com/questions/26748969
复制相似问题