C++ ライブラリのさまざまなバージョン
-
01-07-2019 - |
質問
vista で Visual Studio 2008 を使用して単純な C++ プロジェクトをコンパイルした後、元の vista マシンおよび他の vista コンピューターではすべてが正常に動作します。ただし、XP ボックスに移動すると、次のエラー メッセージが表示されます。「アプリケーションの構成が正しくないため、アプリケーションを起動できませんでした。」
コンパイルした EXE を XP および Vista で動作させるにはどうすればよいですか?数か月前にも同じ問題が発生し、プロジェクトの設定をいくつかいじるだけで解決しましたが、どの設定を変更したかは覚えていません。
解決
ターゲット コンピューターに Visual Studios 2008 ランタイムをインストールする必要があります。
あるいは、プロジェクトのプロパティ ウィンドウで次の場所に移動して、ランタイムを静的にリンクすることもできます。
C ++ - >コード生成 - >ランタイムライブラリを選択し、「マルチスレッド /MT」を選択します
他のヒント
おそらくアプリケーションと一緒に VC ランタイムを配布する必要があります。これにはさまざまな方法があります。 この記事 Visual Studio 2005 または 2008 を使用している場合に、これらの依存関係を配布するさまざまな方法については、Microsoft Visual C++ チームの「」が最もよく説明されています。
この記事で述べたように、再頒布可能インストーラー パッケージをダウンロードしてクライアント マシン上で起動することもできますが、これはほとんどの場合最適なオプションではありません。通常、Windows セットアップ経由で配布する場合はマージ モジュールを含める、または zip フォルダーを配布するだけの場合はアプリのローカル コピーを含めるなど、必要な DLL を含めるより良い方法があります。
もう 1 つのオプションは、アプリケーションと一緒にランタイム ライブラリを配布するのではなく、ランタイム ライブラリに対して静的にリンクすることです。このオプションは、他の DLL をロードしないスタンドアロン EXE にのみ適しています。また、他のアプリケーションによってロードされた DLL ではこれを行うことはできません。
ランタイムに静的にリンクするのが最も簡単です。
C++ -> コード生成 -> ランタイム ライブラリで「マルチスレッド /MT」を選択します。
ただし、これにより実行可能ファイルは数百 KB 大きくなります。多数の小さなプログラムをインストールする場合、それぞれのプログラムにランタイムの独自のコピーによる負荷がかかるため、これが問題になる可能性があります。答えは、インストーラーを作成することです。
新しいプロジェクト -> 「セットアップと展開」 -> 「プロジェクトのセットアップ」
アプリケーション プロジェクト (ランタイムの DLL バージョンを使用して定義) からの出力をインストーラー プロジェクトにロードし、ビルドします。ランタイム DLL への依存関係が認識され、インストーラー パッケージに含まれ、ターゲット マシン上の正しい場所にきちんと目立たないようにインストールされます。