私はc ++が初めてです。VS 2008 Professional を使用して C++ プログラムを作成しました。ウィンドウを作成する Win32 テンプレートから始めました。Vista 32 でコンパイルしました。コンパイルした exe を古い XP sp2 コンピュータに持ってきたところ、アプリケーションの構成が正しくないことがわかりました。何か間違ったことはありますか?プラットフォームに依存しないようにするにはどうすればよいですか?
ありがとう
私はc ++が初めてです。VS 2008 Professional を使用して C++ プログラムを作成しました。ウィンドウを作成する Win32 テンプレートから始めました。Vista 32 でコンパイルしました。コンパイルした exe を古い XP sp2 コンピュータに持ってきたところ、アプリケーションの構成が正しくないことがわかりました。何か間違ったことはありますか?プラットフォームに依存しないようにするにはどうすればよいですか?
ありがとう
Microsoft Visual C++ 2008 SP1 再頒布可能パッケージをインストールしてみて、アプリケーションのリリース ビルドを使用していることを確認してください。
WINVER が WinXP を含むバージョンに設定されていることを確認してください。VS 2008 の Windows のデフォルトのターゲット バージョンは Vista (0x0600) のようです。
次のプリプロセッサ定義を設定します。
#define WINVER 0x0501
できればプロジェクト プロパティの「C/C++/Preprocessor/Preprocessor Definitions」または cl.exe コマンド ラインで -D オプションを使用します。この設定を持つ targetver.h ファイルが存在する可能性もあります (プロジェクトが最初にどのように作成されたかによって異なります)。
詳細については、 http://msdn.microsoft.com/en-us/library/aa383745 (VS.85).aspx を参照してください。
Dependency Walkerを使用して、ターゲットのWinXPシステムに不足しているコンポーネントを見つけることができます。次に、適切な再配布可能ファイルをインストールする必要があります。
プロジェクトのプロパティで、に設定"C/C++ -> Code Generation -> Runtime Library"
し"Multi-threaded (Debug)"
ます。再構築すると、アプリケーションはに依存しなくなりますmsvcr90.dll
。ただし、アプリケーションバイナリは多少大きくなります。
ターゲット システムには、その実行可能ファイルに必要なランタイム ファイルがありません。
次の場所にあります: Microsoft Visual C++ 2008 Redistributable Package (x86)またはMicrosoft Visual C++ 2008 SP1 Redistributable Package (x86)