私は何かが欠けているかもしれません(確かにそうです)が、私は何かを理解していません:
Visual Studio の新しい各バージョンには、特定の msvcrtxx (msvcr100.dll、msvrct.dll、...) の権利が付属しています。多くの場合、有名な「dll 地獄」につながるという事実を除けば、なぜ「Windows Driver Kit」が古い MSVCRT.DLL にリンクされたバイナリを生成し続けるのか、私にはまだわかりません!?
私は何かが欠けているかもしれません(確かにそうです)が、私は何かを理解していません:
Visual Studio の新しい各バージョンには、特定の msvcrtxx (msvcr100.dll、msvrct.dll、...) の権利が付属しています。多くの場合、有名な「dll 地獄」につながるという事実を除けば、なぜ「Windows Driver Kit」が古い MSVCRT.DLL にリンクされたバイナリを生成し続けるのか、私にはまだわかりません!?
Windows には常に、古いベアボーン バージョンの MSVCRT が付属しています。これは、ドライバーがライブラリの独自のコピーを出荷しなくても、基本的なランタイム サポートを利用できるようにするためです。ドライバーには適していますが、高レベルのユーザー モード アプリケーションには適していません。
ライブラリ標準 (および標準のサポート) が進化しているため、VS C++ の各バージョンには新しいバージョンのランタイム ライブラリが付属しています。これらは下位互換性のない方法で進化する場合があるため、古いバージョンの DLL に対してコンパイルされた古いプログラムが、新しいバージョンの DLL で動作することを保証できません。ファイルを明示的にバージョン管理することにより、いわゆる DLL Hell 問題の多くが回避されます。(DLL Hell が実際に問題になるのは、間違った前提を作成し、悪いインストーラーを設計した場合のみです。特に最近では、サイド バイ サイド バージョン管理、マージ モジュールなどを使用している場合は特にそうです。)
アプリは、必要なバージョンのコピーを再配布する必要があります。これは、アプリが依存するライブラリがコンピューター上に存在するという保証がないためです。