2012-04-09 53 views
3

私は、Microsoft Visual Studio C++ express 2010でWindows 7を実行しているPCでコンパイルしたWin32 C++アプリケーションを持っています。アプリケーションは\ MTランタイムフラグ(マルチスレッド)。Exeは、古いバージョンのWindowsで動作しません。

問題: Windows Vistaを実行しているラップトップでmy.exeを実行しようとすると、アプリケーションがクラッシュし、メインウィンドウが開かれません。私が使用している.exeは、Visual Studioプロジェクトの 'リリース'フォルダからの出力です。

私はアプリケーションのwin32関数の大部分をチェックしており、それらはすべてWindows 2000以上で動作します。また、Visual StudioプロジェクトをWindows Vistaのラップトップに移動してコンパイルしたところ、正常に動作していました。

なぜ.exeクラッシュですか?これは、私の.exeをWindows OSの異なるバージョンで動作させるための唯一の方法は、インストーラを使用することですか? .exeのサイズは175kbなので、インストーラはおそらく出力.exeよりも大きいでしょうか?

+3

あなたはhttp://www.dependencywalker.com/の依存関係をチェックしましたか? – Andre

+4

エラーメッセージは何ですか?常にその詳細を含める。 "それはクラッシュする"十分ではありません。 –

答えて

1

VS2010 runtime re-distributableパッケージが必要なようです。リンクはVS2010 SP1用ですので、SP1でコンパイルしていない場合はSP1なしでVS2010が必要な場合があります。

+0

いいえ、 "/ MTでコンパイルされました"。 –

+1

"/ MT"と "175kb"の実行可能なサイズでコンパイルすると、いくつかの疑惑が生じます。 –

+0

@HansPassantは、/ MTと静的にリンクされたライブラリでコンパイルされたVS2010 MFC C++アプリケーションを最近リリースしていますが、Windows 7以外で正しく実行するためにはまだredistを実行する必要があります。VCライブラリは他に依存していますより最近のOSコンポーネントのバージョンは、Redistで更新されます。純粋な推測あなた;) –

関連する問題