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未初始化