システムの C ランタイム ライブラリへの将来の更新の影響を受けないように、ライブラリ (静的ライブラリまたは dll/so) をどのように構築しますか?
7 月末、Microsoftは C ランタイム ライブラリを含む一連のライブラリを更新しました。私たちのアプリは、MFC/C++/VB といくつかのサード パーティ製ライブラリ (クローズド ソースを含む) を組み合わせて作成されています。
ソースを持っているすべてのライブラリを再コンパイルするのに忙しくしていますが、それが本当に必要なのだろうか? 以前のバージョンの C ランタイムに対してビルドされたライブラリをリンクまたはロードするとどうなりますか?
このようなものを再コンパイルするとき、メイン アプリケーションとサポート ライブラリの間でどのコンパイラとリンカーの設定を同じにする必要がありますか? ランタイム ライブラリの設定は同じにする必要があることがわかりました (マルチスレッド バージョンの /MD と /MDd を使用しています) が、他の設定が心配です。私は実際にすべての設定を Visual Studio のプロパティ シートに引き出し、さまざまなプロジェクトすべてに同じシートを使用していますが、これはサード パーティのライブラリでは機能せず、やり過ぎだと考えています。
リンカーが競合するライブラリに関する警告を吐き出すことに気付きましたが、デフォルトのライブラリを無視することを提案しています。そうしても安全ですか?問題に対する非常に醜い解決策のようです。