Visual Studioプロジェクトで静的または動的にCランタイムライブラリにリンクする必要があるかどうかについての議論を読んでいます。Visual Studio Cランタイムに静的または動的にリンクする必要がありますか?
私のプロジェクトでは、最終実行ファイルと同じランタイムライブラリでビルドする必要があるサードパーティライブラリ(Python、HDF5、Trilinos、Microsoft MPI)が用意されています(そうでなければ、リンクできません)。静的にリンクするとき、これらのライブラリにはそれぞれCランタイムのコピーが含まれます。私は最終的な実行ファイルにはランタイムの複数のコピーが含まれているため、問題の原因となる可能性があることを読んでいます。しかし、同じシンボルが複数定義されていると、リンカーは文句を言ってくれませんか?
私は「DLL Hell」を避けたいと思いますが、ランタイムの複数のコピーで静的にリンクすることによって起こり得る潜在的な間違いを心配しています。私は物事を間違って読みますか?
また、私はVisual Studio 2005を使用していますが、Service Pack 1ランタイムは下位互換性がないと読んでいます。つまり、SP1なしでビルドされたアプリケーションは、同じ名前(たとえばmsvcr80.dll)であっても、SP1 DLLを持つマシン上で実行されませんか?
これは私が探していた答えです。プライベートなアセンブリのように私の問題に最も安全な解決策です。並べ替えは、アプリケーションが固定ディレクトリ構造で配布されているという点でMacバンドルを思い出させます。ありがとう! – user76293
ただし、プライベートアセンブリはWindows Updateによって修正されません。したがって、ランタイムライブラリのコピーを最新の状態に保つ必要があります。 http://blogs.msdn.com/larryosterman/archive/2004/04/29/123090.aspx –
私の 'アプリケーション'(My App)フォルダに32ビットのミックスおよび64ビットアプリケーションをサポートします。アセンブリフォルダ名にx32やx64のようなものを単に追加するだけでは、32ビットまたは64ビットのアプリケーションしかない場合にのみプライベートアセンブリを使用できます。 – Patrick