如何解决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);
}
我有两个猜测:
- 您弄乱了项目的UNICODE设置
- COM未初始化
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。