一部の C++ プロジェクトでは、ランタイム パッケージのインストールが必要であるのに、そうでないプロジェクトがあるのはなぜですか?
編集:ランタイムなしでプロジェクトを機能させるには?
一部の C++ プロジェクトでは、ランタイム パッケージのインストールが必要であるのに、そうでないプロジェクトがあるのはなぜですか?
編集:ランタイムなしでプロジェクトを機能させるには?
静的にリンクされているものもあれば、実行時にロードされる動的ライブラリに依存するものもあります。独自のプロジェクトを静的にリンクするには、プロジェクトの構成を変更する必要があります。これを行う方法は、使用しているコンパイラ/リンカーおよび/または IDE によって異なります。
一部のアプリケーションは、動的にリンクされたプログラムであるシステム ライブラリとリンクして構築されています。他のプログラムには、ライブラリのコードが実行可能ファイルに含まれています。これは、静的にリンクされたプログラムです。
動的リンクの長所:
動的リンクの短所:
静的リンクの長所:
静的リンクの短所:
静的プロジェクトを取得するには、プロジェクト プロパティでオプションを設定する必要があります。
これは、VS2005 Service Pack 1 ランタイムを指していると思います。何らかの理由で、MS は下位互換性のない機能をいくつか追加したため、VS2005sp1 でビルドされたアプリには、それに対応するランタイムが必要です。
スタティック ライブラリとしてではなく、DLL としてリンクされた標準 C/C++ ライブラリを使用する場合は、ランタイム パッケージをインストールする必要があります。したがって、これを回避する 1 つの方法は、標準 C/C++ ライブラリを静的にリンクすることです (C++ プロジェクト設定)。あなたの場合、それは可能かもしれませんし、不可能かもしれません。
そうでない場合は、Visual Studio ディストリビューションの依存関係ウォーカー ツールを使用して、アプリケーションに必要な DLL を特定し、それらを実行可能ファイルの近くに置くことができます。
Visual Studio 2005 以降で知っておくべきことは、バイナリのマニフェストがあると、作業が難しくなる可能性がある (そしておそらくそうなるでしょう) ということです。特に、Visual Studio 2005 の SP1 では、C++ ライブラリのバージョンとマニフェストも変更されています。