0

そのため、Windows XP Visual Studio 2008 で開発を行ってきました。C++ アプリを 32 ビット モードでビルドしていると思います。新しい Windows 7 64 ビット ボックスでプログラムを実行すると、ロードの途中でアクセス違反エラーがスローされます。そこで、すべての開発ツールをロードし、Windows 7 でプロジェクトを再コンパイルしてクラッシュ サイトを見つけましたが、完全に機能しました。何?アプリを x64 で動作させるにはどうすればよいですか? 2 つの別々のバージョンをリリースする必要がありますか? 64 ビットをターゲットにできることはわかっていますが、2 つの別個の実行可能ファイルは好きではありません。検索しましたが、2 つのバージョンのソリューションまたはすべての .net を取得し続けています。これはネイティブ C++ です。どこかに x86 フラグはありますか?

4

3 に答える 3

3

「2 つの別々のバージョンをリリースする必要がありますか?」 アプリの機能によって異なります。32 ビット アプリの大部分は、WoWモードで問題なく動作します。

「どこかに x86 フラグはありますか?」 うん。構成マネージャー (Alt-B、O) を開くと、プラットフォームの選択に win32 が表示される可能性があります。

アプリがクラッシュする理由には、デバッグが必要です。デバッガーを 64 ビット OS の 32 ビット バージョンにアタッチできるはずです。

于 2009-12-26T02:59:48.860 に答える
1

あなたはあなたが記憶を破壊しているかもしれないという可能性を考えましたか?アプリケーションがメモリにロードされる方法から、32ビットWindowsの32ビットアプリと64ビットWindowsの64ビットアプリが「ラッキーになる」可能性があります。つまり、重要なメモリ位置が上書きされることはありません。 、一方、64ビットWindows上の32ビットアプリはそれほど幸運ではなく、クラッシュします。

本当にメモリを破壊しているかどうかを確認するには、PurifyValgrindなどのツールを使用できます。

于 2009-12-26T03:36:16.500 に答える
0

他の回答者が既に述べたように、アプリケーションには 1 つの環境に隠されているバグがある可能性が非常に高いです。学習曲線の点で参入コストが低い優れたツールは、Microsoft のアプリケーション検証ツールです。これとデバッグ ツールを組み合わせることで、非常に良いスタートを切ることができます。gflags ユーティリティを見てください。

于 2009-12-26T05:02:13.220 に答える