異なるバージョンの MSVC でいくつかのプロジェクトで使用するサード パーティ製ライブラリをビルドする必要がある場合、通常はすべてのMSVC バージョンとデバッグ構成とリリース構成の両方に対してビルドします。それがブーストの役割であり、私たちのチームがこれまでずっとやってきたことです。
しかし、私はまだ理解していません.どうしてこのライブラリをビルドできなかったのですか...何でも. 必要なのは、関数プロトタイプとオブジェクト コードだけですよね? CRT を静的にリンクしているので、外部依存関係はありません。しかし、MSVC8 の Release でビルドされたライブラリを MSVC10 の Debug のプロジェクトにリンクしようとすると、この迷惑な「定義済み」リンカー エラーが発生します。
しかし、なぜ?このすべての関数を lib 内に「カプセル化」し、それらをエクスポートせずにプロジェクトが lib から必要なものだけを取得できるようにすることはできますか? すべてのプロジェクトでリンクできる libpng と zlib のプリコンパイル済みバージョンを使用できるのはなぜですか? はい、MSVC を使用してビルドされていないと思いますが、CRT の同じ機能を使用しています。誰かが詳細に説明したり、この問題の賢明な説明へのリンクを共有したりできますか?