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 上崩溃的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows 7 上崩溃但在 XP 上运行

OpenFileDialog 在 Windows XP 下崩溃,但在 Windows 7 下不崩溃

VS2012编译的MFC程序XP运行出错R6010

什么样的崩溃会在 Windows XP 上产生应用程序错误(又名应用程序弹出窗口)?

用vs2008做的MFC程序,怎么在WINDOWS XP下运行?

MFC 功能区在 Windows 2008 中崩溃