我有三個不同的庫工作,一個核心(可以被編譯爲靜態或DLL),圖形(可被編譯爲靜態或DLL - 與食人魔交易),物理(可以被編譯爲靜態只是由於許可 - Havok)。然後項目根據需要使用庫的組合。所述物理部分取決於圖形和核心的一些功能,而圖形取決於核心的某些功能。該項目對調試和發佈中靜態鏈接的所有庫都正常工作。使用核心和圖形的動態鏈接庫時出現以下錯誤,但使用靜態鏈接的物理庫庫。混合靜態和動態(共享)庫?
錯誤1錯誤LNK2005: 「市民: unsigned int類型__thiscall OgreFW :: FwErrorLog :: GetError(無效)」 已經定義 (?GetError @ FwErrorLog @ OgreFW @@ QAEIXZ) 在 FwCore_d_dll.lib (FwCore_d.dll)FwHavok_d.lib
我可以看到錯誤的含義,但我很困惑如何規避這種情況。如果我的庫像這樣依賴於對方,並且物理引擎(Havok)的許可只允許靜態鏈接,我是否需要重新考慮我的設計(這是一個大問題:()或者是否有解決方法?
感謝
編輯:我已經檢查,以確保所有的庫正在與編譯MDD
EDIT2:我可以使用/FORCE:MULTIPLE
但隱藏着問題,而不是解決它
編輯3:道歉幾個編輯。函數GetError()在頭文件中定義,如果我將它放在源文件中,鏈接錯誤消失。這是爲什麼?
由於它是一個將被用於許多項目的框架,DLL的優點將保持(快速鏈接,更新而無需重新編譯)。我也想知道這個問題的解決方案,而不是側面的步驟。 – Samaursa 2010-09-07 04:57:52