问题描述
运行由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);
}
我有两个猜测:
- 您弄乱了项目的UNICODE设置
- COM未初始化