我有一個項目由兩個文件main.c和logoff.c組成。當我嘗試編譯他們,我得到這個錯誤:有關重複符號的奇怪ld錯誤
gcc -c -g -Wall main.c
gcc -c -g -Wall logoff.c
gcc -o main -g -Wall main.o logoff.o
ld: duplicate symbol _logoff in logoff.o and main.o
我有一個在logoff.c註銷命名功能,但我已搜查main.c中的文本「註銷」,並沒有發現任何(該功能甚至沒有叫!)。
如果我將函數的名稱更改爲log_off,它就可以工作。在文件中還有第二個函數,它會導致相同的錯誤,除非其名稱也被更改。
這有可能會發生嗎?我在兩個不同的系統上有這個問題。有一件事可能是相關的,那就是我在另一個項目中使用了相同的logoff.c文件,但它沒有連接到這個文件。
出於好奇,你是否將#include logoff.c放入main.c中? – 2008-11-17 22:18:58
那是你的問題。將聲明移動到像logoff.h這樣的頭文件,它會很好地編譯。 – 2008-11-17 23:20:13