在 MFC 编程的 \$InstallDir\VC\atlmfc\src\mfc\olelock.cpp 第 62 行上调试断言失败
Posted
技术标签:
【中文标题】在 MFC 编程的 \\$InstallDir\\VC\\atlmfc\\src\\mfc\\olelock.cpp 第 62 行上调试断言失败【英文标题】:Debug Assertion Failed on \$InstallDir\VC\atlmfc\src\mfc\olelock.cpp line 62 on MFC programming在 MFC 编程的 \$InstallDir\VC\atlmfc\src\mfc\olelock.cpp 第 62 行上调试断言失败 【发布时间】: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 中。 【参考方案1】:这个断言只是说你调用 AfxOleUnlockApp 比调用 AfxOleLockApp 更频繁。
为特定函数设置断点。检查谁调用锁定/解锁。可能有多次释放的对象......
【讨论】:
以上是关于在 MFC 编程的 \$InstallDir\VC\atlmfc\src\mfc\olelock.cpp 第 62 行上调试断言失败的主要内容,如果未能解决你的问题,请参考以下文章