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行
添加(磅/平方英寸,磅/平方英寸);
}
我有两个猜测:
什么是
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);
}