微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Microsoft Visual C ++运行时库_Assertion失败/使用MFC的GUI

如何解决Microsoft Visual C ++运行时库_Assertion失败/使用MFC的GUI

运行由C ++开发的GUI时,当我想通过该应用程序打开文件时收到以下错误

Microsoft Visual C ++运行时库程序:C:\ Windows \ SYSYTEM32 \ mfc140d.dll调试断言失败!文件:d:\ agent_work \ 9 \ s \ src \ vctools \ VC7Libs \ Ship \ ATLMFC \ Src \ MFC \ filelist。 Line:221有关您的程序如何导致断言失败的信息,请参见有关断言的Visual C ++文档。 (按“重试”以调试应用程序)1)中止2)重试3)忽略

它为以下命令给出该错误

||

错误在第一行(如果)。有人知道原因吗?我是一个初学者,代码是由我工作的公司的一位高级同事开发的。 在此先感谢Sanaz

解决方法

这是MFC代码(第221行标有我的注释):

void CRecentFileList::Add(LPCTSTR lpszPathName,LPCTSTR lpszAppID)
{
    CWinApp* pApp = AfxGetApp();
    if (pApp == NULL || !pApp->IsWindows7())
    {
        Add(lpszPathName);
        return;
    }

    CString strAppID = lpszAppID == NULL ? _T("") : lpszAppID;

    ASSERT(AfxIsValidString(lpszPathName));

    Add(lpszPathName);

    HRESULT hr = S_OK;
    CComPtr<IShellItem> psi = NULL;

#ifdef UNICODE
    hr = _AfxSHCreateItemFromParsingName(lpszPathName,NULL,IID_IShellItem,reinterpret_cast<void**>(&psi));
#else
    {
        USES_CONVERSION;
        LPOLESTR lpWPath = A2W(lpszPathName);
        hr = _AfxSHCreateItemFromParsingName(lpWPath,(LPVOID*)&psi);
    }
#endif

    ENSURE(SUCCEEDED(hr)); // THIS IS LINE 221

    Add(psi,strAppID);
}

我有两个猜测:

  1. 您弄乱了项目的UNICODE设置
  2. COM未初始化

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。