簡體   English   中英

SDL2,已在libcmt中定義的錯誤LNK2005對象

[英]SDL2, error LNK2005 objects already defined in libcmt

因此,這是一個常見錯誤,但是所有帖子都說我需要更加注意要包括的庫的版本。 我正在使用SDL2,OpenGL和SDL_Mixer ...除了堅持使用32位庫之外,我沒有其他選擇。

調試編譯正常,但除非將運行時庫設置為/ MD,否則發布會給我LNK2005錯誤。 我想避免這種額外的依賴性。 除非Visual Studio啟動發布版本,否則生成的可執行文件將停止對SDL初始化或某些OpenGL調用的響應。 因此,我遇到了某種多線程問題,但我還無法完全理解。 沒有什么幫助?

更新:/ FORCE:MULTIPLE允許使用/ MT編譯項目。 但是,與/ MD一樣,除非Visual Studio啟動發布版本,否則生成的可執行文件將崩潰。 這意味着什么?

UPDATE2:在SDL項目中使用/ MD。 崩潰只是調試器未捕獲的內存錯誤。 鏈接無關。

好吧,所以我看到的唯一其他選擇是

(1)忽略另一個導致LNK2005錯誤的庫(由於您在兩個地方定義了東西,所以它不知道使用哪個。由於忽略libcmt.lib導致了很多問題,請嘗試在另一個地方定義方法)。

2)在鏈接器命令行選項中使用/ FORCE:MULTIPLE,它將使它允許符號的多個定義。

重建SDL是一種選擇嗎? 如果是這樣的話

  • 從libsdl.org獲取源
  • 轉到VisualC目錄
  • 選擇相關的解決方案
  • 從那里,對於每個項目,將構建類型從/ MD更改為/ MT
  • 重建:現在您應該只獲得一個以/ MT形式構建的lib和DLL,並且應該與以/ MT編譯的程序鏈接。 您不再需要訴諸/ ignorelibs和/ forcemultiple

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM