【发布时间】:2014-11-05 02:57:45
【问题描述】:
我必须使用 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();
}
}
我怎样才能避免这种断言?感谢您的支持。
【问题讨论】:
-
断言何时发生?关机时?在启动?显示 MFC 视图之后?
-
在 MFC 视图显示之后。在这种情况下,视图显示在 WPF 中的 Grid 中。