3

一部の C++ プロジェクトでは、ランタイム パッケージのインストールが必要であるのに、そうでないプロジェクトがあるのはなぜですか?

編集:ランタイムなしでプロジェクトを機能させるには?

4

4 に答える 4

8

静的にリンクされているものもあれば、実行時にロードされる動的ライブラリに依存するものもあります。独自のプロジェクトを静的にリンクするには、プロジェクトの構成を変更する必要があります。これを行う方法は、使用しているコンパイラ/リンカーおよび/または IDE によって異なります。

于 2009-04-02T08:56:53.747 に答える
2

一部のアプリケーションは、動的にリンクされたプログラムであるシステム ライブラリとリンクして構築されています。他のプログラムには、ライブラリのコードが実行可能ファイルに含まれています。これは、静的にリンクされたプログラムです。

動的リンクの長所:

  • プログラムの実行可能ファイルのサイズが小さい。
  • 動的にリンクされたライブラリが共有されている場合、メモリ消費が少なくなります。
  • よりよい性能。

動的リンクの短所:

  • ライブラリへの依存。
  • 展開はより困難です。

静的リンクの長所:

  • 依存関係はありません。
  • アプリケーションの展開が容易になります。

静的リンクの短所:

  • 実行ファイルが大きくなります。

静的プロジェクトを取得するには、プロジェクト プロパティでオプションを設定する必要があります。

于 2009-04-02T09:55:49.753 に答える
1

これは、VS2005 Service Pack 1 ランタイムを指していると思います。何らかの理由で、MS は下位互換性のない機能をいくつか追加したため、VS2005sp1 でビルドされたアプリには、それに対応するランタイムが必要です。

于 2009-04-02T08:58:49.470 に答える
1

スタティック ライブラリとしてではなく、DLL としてリンクされた標準 C/C++ ライブラリを使用する場合は、ランタイム パッケージをインストールする必要があります。したがって、これを回避する 1 つの方法は、標準 C/C++ ライブラリを静的にリンクすることです (C++ プロジェクト設定)。あなたの場合、それは可能かもしれませんし、不可能かもしれません。

そうでない場合は、Visual Studio ディストリビューションの依存関係ウォーカー ツールを使用して、アプリケーションに必要な DLL を特定し、それらを実行可能ファイルの近くに置くことができます。

Visual Studio 2005 以降で知っておくべきことは、バイナリのマニフェストがあると、作業が難しくなる可能性がある (そしておそらくそうなるでしょう) ということです。特に、Visual Studio 2005 の SP1 では、C++ ライブラリのバージョンとマニフェストも変更されています。

于 2009-04-02T11:08:09.253 に答える