我正在編譯一些依賴於包含防護的代碼來防止對象和函數的多重定義,但Visual Studio 2008給我的鏈接錯誤有多個定義。我不明白爲什麼,因爲我以前使用的代碼非常類似,並且沒有造成問題。我一定在做些愚蠢的事情,但我不知道它是什麼。我也嘗試去掉包含衛士並使用#pragma一次,但我得到相同的鏈接錯誤。我應該檢查什麼?爲什麼不包括曾經工作的警衛或雜注?
9
A
回答
17
如果它們是鏈接器錯誤,最可能的原因可能是標頭中定義的非內聯函數。
如果在包含在多個源文件中的頭中有一個非內聯函數,它將在每個源文件(「翻譯單元」)中定義,因此該函數將被定義爲多於一次,因此多重定義錯誤。
0
如果你遇到鏈接器錯誤...你確定你不是1)在代碼中實際定義一個函數兩次或2)試圖做一些愚蠢的事情,如源文件(與頭文件相反)#include
)?
0
這也可能是由於使用鏈接其他庫的不同版本的cstd庫引起的。請在C++/Code生成部分下檢查並確保所有項目都使用相同的設置。
相關問題
- 1. 爲什麼在C++中不包括警衛?
- 2. SAS宏包括警衛
- 3. 米斯拉警告爲包括後衛
- 4. 內部和外部雜注之間的區別是否包括警衛?
- 5. 爲什麼不dismissWithClickedButtonIndex曾經調用clickedButtonAtIndex?
- 6. 函數包括隨機性和警衛
- 7. JSON.NET:爲什麼使用JToken - 曾經?
- 8. 爲什麼包括bom不起作用?
- 9. 爲什麼我的jQuery Mobile包括顯然不工作?
- 10. Laravel什麼是警衛?
- 11. 爲什麼此警報不工作
- 12. 爲什麼重複報警不工作?
- 13. 爲什麼這包括不能在jsp中工作?
- 14. 曾經工作過的SQL查詢不再工作
- 15. C++包括後衛
- 16. 包括不工作
- 17. 爲什麼不使用注射工作?
- 18. 爲什麼@OneToMany批註不工作
- 19. 爲什麼FFMPEG工作,1080,但不具備720p大小工作... ...(包括代碼)
- 20. 包括php不工作爲我的navbar.php
- 21. 什麼是合法的erlang警衛?
- 22. E_ACCESSDENIED在CoCreateInstance上,它曾經工作
- 23. 曾經評爲js
- 24. Rails的服務器readline的錯誤時,包括警衛寶石
- 25. 爲什麼警衛不能保護我免受我
- 26. 爲什麼在設置AVAudioSession類別時不能使用警衛?
- 27. 爲什麼document.location或window.location不能工作?
- 28. 具有重複的警告包括在Objective-C後衛C++頭
- 29. 問題與包括後衛
- 30. 有什麼// @包括在C++註釋
是的,你是對的...哎呀。謝謝! – Stewart 2009-11-24 04:52:18
你也可以通過製作模板來使它們變成弱符號 – 2009-12-09 10:39:33