Microsoft Visual C++;运行库\u断言失败/GUI使用MFC 在运行C++开发的GUI时,当我想打开该应用程序的文件时,我会收到以下错误:

Microsoft Visual C++;运行库\u断言失败/GUI使用MFC 在运行C++开发的GUI时,当我想打开该应用程序的文件时,我会收到以下错误:,c++,mfc,C++,Mfc,微软VisualC++运行库程序:C:\Windows \SySyTime3\MFC140DLL调试断言失败!文件:d:\agent\u work\9\s\src\vctools\VC7Libs\Ship\ATLMFC\src\MFC\filelist。第221行:关于程序如何导致断言失败的信息,请参阅ActudioC++上的VisualC++文档。(按“重试”调试应用程序)1)中止2)重试3)忽略 它为以下命令提供该错误: if (!pFile->Open (szFOutName, CF

微软VisualC++运行库程序:C:\Windows \SySyTime3\MFC140DLL调试断言失败!文件:d:\agent\u work\9\s\src\vctools\VC7Libs\Ship\ATLMFC\src\MFC\filelist。第221行:关于程序如何导致断言失败的信息,请参阅ActudioC++上的VisualC++文档。(按“重试”调试应用程序)1)中止2)重试3)忽略

它为以下命令提供该错误:

if (!pFile->Open (szFOutName, CFile::modeRead, &FEx))



{

    //......The file can't be opened. Alert the user.

    if (szFOutName != "")

        AfxMessageBox ("Output doesn't exist, please run the simulation first!", MB_ICONEXCLAMATION | MB_OK, 0);

   

    //......Get rid of the file handle, and reset szFileName.                                            

    delete pFile;

   

    szFOutName   = "";

    nopen=2;

}
错误出现在第一行(如果)。有人知道原因是什么吗?我是一名初学者,代码由我工作的公司的一位资深同事开发。 提前感谢,Sanaz这里是MFC代码(第221行标有我的注释):

void CRecentFileList::Add(LPCTSTR lpszPathName,LPCTSTR lpszAppID)
{
CWinApp*pApp=AfxGetApp();
如果(pApp==NULL | |!pApp->IsWindows7())
{
添加(lpszPathName);
返回;
}
CString STRAPID=lpszAppID==NULL?\u T(“”):lpszAppID;
断言(AfxIsValidString(lpszPathName));
添加(lpszPathName);
HRESULT hr=S_正常;
CComPtr psi=NULL;
#ifdef UNICODE
hr=_AfxSHCreateItemFromParsingName(lpszPathName,NULL,IID_IShellItem,reinterpret_cast(&psi));
#否则
{
使用_转换;
LPOLESTR lpWPath=A2W(lpszPathName);
hr=_AfxSHCreateItemFromParsingName(lpWPath,NULL,IID_IShellItem,(LPVOID*)&psi);
}
#恩迪夫
确保(成功(hr));//这是第221行
添加(磅/平方英寸,磅/平方英寸);
}
我有两个猜测:

  • 你把项目的UNICODE设置搞砸了
  • 未初始化中的COM

  • 什么是
    pFile
    ?请发一封邮件。有人知道原因吗?查看MFC源代码中断言的代码行,应该可以告诉您此调用中的哪个参数
    pFile->Open(szFOutName,CFile::modeRead,&FEx)
    不正确。自10月28日以来是否发生了更改:?是的,我找到了错误所在@弗拉德爱因斯坦
    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, NULL, IID_IShellItem, (LPVOID*)&psi);
        }
    #endif
    
        ENSURE(SUCCEEDED(hr)); // THIS IS LINE 221
    
        Add(psi, strAppID);
    }