MFC 应用程序在 Windows XP 上崩溃
Posted
技术标签:
【中文标题】MFC 应用程序在 Windows XP 上崩溃【英文标题】:MFC application crashes on Windows XP 【发布时间】:2010-12-16 11:18:34 【问题描述】:我的 MFC 应用程序有一个非常奇怪的问题。详情:
在 Windows Vista SP1 Ultimate 下使用 Microsoft Visual Studio 2008(版本 9.0.30729.1 SP)构建。这个应用程序。 15岁左右,看过大部分VS版本。
我有一个单独的测试电脑,带有:Windows XP Pro SP3、Vista Home Premium、7 Ultimate。
当然,我在所有 Windows 上都安装了 VC++ 可再发行组件。
现在我将尝试描述问题:
该程序使用 MFC 类来处理 CArchive 对象。用户可以创建一个新项目,该项目包含一个或多个工作表,其中包含可能包含文本、图片或两者的单元格。例如带有 8x8 网格的工作表。此项目可以保存到磁盘:MySheet.K01、MySheet.K02 等。使用 CMultiDocTemplate 查看工作表。
我创建了这个项目的一个分支,用于创建一个可以将这些文件转换为另一种格式的程序。我使用 AllocConsole() 使它成为一个控制台应用程序。
当我测试该程序时,结果是它在 Windows 7 上运行良好,部分在 Windows Vista 下运行,但在 Windows XP 上崩溃。
我已经排除了程序在 Windows XP 下编译的可能性。
这是我认为出了什么问题:
CFile myFile;
CMyDoc *pDoc = (CMyDoc *)m_pDocViewTemplate->CreateNewDocument(); // Get a CDocument and cast it
CFileException myError;
TCHAR *arcFileName = new TCHAR[MAX_PATH];
BOOL bTmp = myFile.Open(arcFileName, CFile::modeRead, &myError);
char lpszError[1024];
myError.GetErrorMessage(lpszError, 1024, 0);
_cprintf(lpszError);
_cprintf("\n");
if(!bTmp)
_cprintf("ERROR: Unable to open the file!\n");
return;
myFile.SeekToBegin();
CArchive myArc(&myFile, CArchive::load, 8192, 0);
myArc.m_bForceFlat = TRUE;
myArc.m_pDocument = pDoc;
pDoc->Serialize(myArc);
我在这里真的很茫然。如果需要,我可以提供更多详细信息。
提前致谢。
【问题讨论】:
【参考方案1】:arcFileName 将包含如下内容:“C:\MyProject\MySheet.K01”
显然……
【讨论】:
【参考方案2】:在 XP 上从 IDE 运行时崩溃?你会遇到什么崩溃?它会在 Debug 和 Release 版本中崩溃吗?
【讨论】:
以上是关于MFC 应用程序在 Windows XP 上崩溃的主要内容,如果未能解决你的问题,请参考以下文章
OpenFileDialog 在 Windows XP 下崩溃,但在 Windows 7 下不崩溃
什么样的崩溃会在 Windows XP 上产生应用程序错误(又名应用程序弹出窗口)?