2011-04-28 30 views
2

我試圖編譯我的代碼,它有一個錯誤的行。我已經刪除了這條線,但仍編譯失敗,因爲一些鬼:由於我刪除了一行,C++無法在Linux上編譯

/tmp/ccaWghvE.o:在功能 show(lipid*)': membrane.cpp:(.text+0xf52): multiple definition of秀(脂質*)」 /tmp/ccQicBxx.o:main.cpp: (+的.text量0x150): 首先定義這裏collect2:LD 返回1退出狀態

我怎樣才能擺脫呢?

感謝

解決

我已經使用RALU尖端和重新創建文件夾,複製到一切吧。 感謝

+0

沒有代碼我們什麼都做不了。只是刪除錯誤的行是不夠的,事實上,這種影響可能是災難性的。 – orlp 2011-04-28 15:12:55

+0

你用來構建軟件的命令是什麼? – jolo 2011-04-28 15:13:02

+5

嘗試刪除所有源 – 2011-04-28 15:13:27

回答

1

它說 '多重定義'。你已經定義了不止一次的東西。確保你只定義一次!

刪除線的誤差是很少上解決了這個問題。這通常只是編譯器意識到出錯的一點。您需要了解錯誤信息,並更正整個程序,而不僅僅是這一行。

8

您在main.cppmembrane.cpp中都定義了show(lipid*)。要麼你在這兩個文件中都有相同功能的副本,那麼你在函數頭中定義了非內聯函數。

1

你有一個雙重定義的符號。

想必你在頭文件中定義show(lipid*)包括來自多個翻譯的單位,頭文件。要解決此問題,請聲明inline或將定義(實際代碼)移至cpp文件,並將聲明保留在頭文件中。

相關問題