MFC应用程序在Windows XP上崩溃

时间:2010-12-16 11:18:35

标签: c++ mfc visual-c++

我的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);

我真的很茫然。如果需要,我可以提供更多细节。

提前致谢。

2 个答案:

答案 0 :(得分:0)

arcFileName将包含类似:“C:\ MyProject \ MySheet.K01”

...显然

答案 1 :(得分:0)

从XP上的IDE运行时崩溃了吗?你得到什么崩溃?它在Debug和Release版本中崩溃了吗?