我有一个项目由两个文件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