MSVCの異なるバージョンでいくつかのプロジェクトで使用するサードパーティ製のライブラリを作成する必要があるときは、通常、、、の場合は両方とものデバッグとリリース構成にします。それがブーストの仕組みです。私たちが私の一生の間、私のチームでやったことです。私のプロジェクトでデバッグとリリースの設定で使用するサードパーティライブラリを正しくビルドする方法は?
しかし、私はまだ得られません、なぜ私はちょうどこのようなライブラリを構築できませんでした。私が必要とするのは、関数プロトタイプとオブジェクトコードだけです。私はCRTを静的にリンクしているので、外部依存関係はありません。しかし、MSVC8でリリースされたライブラリとMSVC10でのデバッグで私のプロジェクトをリンクしようとすると、私はこの迷惑な "既に定義された"リンカエラーを抱えています。
なぜですか?私はlib内のすべての関数を "カプセル化"してエクスポートすることはできないので、私のプロジェクトはlibから必要なものだけを取ることができますか?すべてのプロジェクトでリンクできるプリコンパイルされたlibpngとzlibのバージョンはなぜあるのですか?はい、彼らはMSVCを使用してビルドされていませんが、私は推測しますが、まだCRTの同じ機能を使用しています。誰でも深く説明したり、この問題の啓蒙された説明へのリンクを共有したりできますか?
ニースの回答! "...リンカはライブラリがリンクされると、CRTを後で接着します..." - リンカが.libのCRT関数をリンクさせる方法がありますか?自分のコードをリンクすることができます。なぜCRTをリンクさせることができないのですか? – Mikhail
それは静的な.libsの仕組みではありません。これは非常に単純なファイル形式で、.objファイルのコレクションです。 DLLを作成することによって、リンカーにCRTをリンクさせるようにします。 –