Core (静的または DLL としてコンパイル可能)、Graphics (静的または DLL としてコンパイル可能 - Ogre を扱う)、Physics (ライセンスのために静的としてのみコンパイル可能 - Havok)の 3 つの異なるライブラリを使用しています。その後、プロジェクトは必要に応じてライブラリを組み合わせて使用します。Physics部分はGraphicsとCoreの一部の機能に依存していますが、GraphicsはCoreの一部の機能に依存しています。プロジェクトは、デバッグとリリースで静的にリンクされたすべてのライブラリで正常に動作します。Coreの動的にリンクされたライブラリを使用すると、次のエラーが発生します。グラフィックスですが、静的にリンクされた物理ライブラリです。
エラー 1 エラー LNK2005: "public: unsigned int __thiscall OgreFW::FwErrorLog::GetError(void)" (?GetError@FwErrorLog@OgreFW@@QAEIXZ) は既に FwCore_d_dll.lib(FwCore_d.dll) で定義されています FwHavok_d.lib
エラーの意味はわかりますが、これを回避する方法がわかりません。ライブラリがこのように相互に依存しており、物理エンジン (Havok) のライセンスで静的リンクしか許可されていない場合、設計を再考する必要がありますか (これは大きな問題です :( ) またはそれを回避する方法はありますか?
ありがとう
EDIT:すべてのライブラリがMDdでコンパイルされていることを確認するためにすでにチェックしました
EDIT2:使用できます/FORCE:MULTIPLE
が、それは問題を解決するのではなく隠しています
EDIT3: いくつかの編集をお詫びします。関数GetError()はヘッダーで定義されています。ソース ファイルに配置すると、リンク エラーはなくなります。何故ですか?