我必须使用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 回答
这个Assertion简单地说你调用AfxOleUnlockApp比AfxOleLockApp更频繁 .
将断点设置为特定功能 . 检查谁锁定/解锁 . 可能有不止一次释放的对象......