Visual StudioプロジェクトでCランタイムライブラリに静的にリンクするか動的にリンクするかについて、両側で議論を読みましたが、何を考えればよいのかまだ完全にはわかりません。
私のプロジェクトは、いくつかのサードパーティライブラリ(Python、HDF5、Trilinos、およびMicrosoft MPI)を取り込みます。これらのライブラリはそれぞれ、最終的な実行可能ファイルと同じランタイムライブラリでビルドする必要があります(そうでない場合、それらをリンクすることはできません)。静的にリンクする場合、これらの各ライブラリにはCランタイムのコピーが含まれます。最終的な実行可能ファイルにはランタイムの複数のコピーが含まれ、それらのいずれも相互に対話できないため、これにより問題が発生する可能性があることを読みました。しかし、同じシンボルが複数定義されている場合、リンカーは文句を言いませんか?
「DLLHell」は避けたいのですが、ランタイムの複数のコピーを静的にリンクすることで発生する可能性のある潜行性のエラーが心配です。私は物事を間違って読んでいますか?
また、Visual Studio 2005を使用していますが、ServicePack1ランタイムには下位互換性がないことを読みました。これは、SP1なしでビルドされたアプリは、同じ名前(msvcr80.dllなど)であっても、SP1 dllを持つマシンでは実行されないことを意味しますか?