【问题标题】: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 中。

标签: c# c wpf mfc


【解决方案1】:

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

为特定函数设置断点。检查谁调用锁定/解锁。可能有多次释放的对象......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多