2014-09-19 79 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),或者將示例代碼剪切並粘貼到該文件中,而不是創建新文件。

相關問題