2014-09-19 97 views
13

我对C和C++编程非常陌生,并且在软件编程方面经验很少(我的背景是基于Web的)但我试图用C/C++进行试验并且Xcode的......所以我发现这个代码(和网上许多类似的变化):ld:体系结构x86_64的1个重复符号

#include <stdio.h> 

int main() 
{ 
    printf ("Test"); 
    return 0; 
} 

然而,当我来到编译在Xcode我得到以下错误:

> duplicate symbol _main in: 
>  /Users/thomas/Library/Developer/Xcode/DerivedData/test-etqojvxbxhxjqeggdzkbfufvbeza/Build/Intermediates/test.build/Debug/test.build/Objects-normal/x86_64/first.o 
>  /Users/thomas/Library/Developer/Xcode/DerivedData/test-etqojvxbxhxjqeggdzkbfufvbeza/Build/Intermediates/test.build/Debug/test.build/Objects-normal/x86_64/main.o 
> ld: 1 duplicate symbol for architecture x86_64 clang: error: linker 
> command failed with exit code 1 (use -v to see invocation) 

可能的Xcode对我来说,作为一个新手使用是错误的吗?如果有人可以推荐更好的编译器,那也会很棒!

+0

我没有进入Mac电脑,所以我不能帮助更多,但它的环境有问题,而不是代码。你应该尝试使用GCC。 – python 2014-09-19 23:41:12

+2

偶然,'main.c'和'first.c'中有'main'函数吗?或者你是如何编译它们的?您似乎将两个对象文件链接在一起。 – 2014-09-19 23:42:32

回答

12

当您在Xcode中创建一个新项目时,它会自动为您提供一个起始文件,其中包含main()。如果您创建了一个新文件(如first.c),然后将测试代码粘贴到其中,则将定义main()两次,并获取该错误。

您需要删除Xcode在新项目中提供的文件(例如main.cmain.m),或者将示例代码剪切并粘贴到该文件中,而不是创建新文件。

相关问题