MFCアプリケーションに非常に奇妙な問題があります。詳細:Windows XPで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と別のテスト用PCを持っています。
もちろん、私はすべてのWindowsにVC++再配布可能ファイルをインストールしました。
今、私はこの問題を説明しようとします:
プログラムは、CArchiveオブジェクトを操作するためのMFCクラスを使用しています。ユーザーは、テキスト、画像、またはその両方を含むセルを含む1つまたは複数のシートを含む新しいプロジェクトを作成できます。例えば8×8グリッドのシート。このプロジェクトはディスクに保存できます: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