我的MFC应用程序有一个非常奇怪的问题。详细信息:MFC应用程序在Windows XP上崩溃
- 使用Microsoft Visual Studio 2008(版本9.0.30729.1 SP)在Windows Vista SP1 Ultimate下构建。
此应用程序。大约15岁,并且看到了大多数VS版本。
我有一个单独的测试电脑:Windows XP专业版SP3,Vista家庭高级版,7旗舰版。
当然,我在所有Windows上安装了VC++ redistributable。
现在,我会尽量说明问题:
程序使用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);
我真的很茫然这里。如果需要,我可以提供更多细节。
在此先感谢。
请编辑你的问题,而不是写一个答案。 – avakar 2010-12-16 11:26:26