2014-09-19 23 views
13

Tôi rất mới với lập trình C và C++, và có rất ít kinh nghiệm về Lập trình phần mềm (nền của tôi là Web Based) Nhưng tôi đang cố gắng thử nghiệm với C/C++ và Xcode ... Vì vậy, tôi đã tìm thấy mã này (và nhiều biến thể tương tự như trực tuyến):ld: 1 biểu tượng trùng lặp cho kiến ​​trúc x86_64

#include <stdio.h> 

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

Tuy nhiên, khi tôi đến để biên dịch nó trong Xcode tôi nhận được lỗi sau:

> 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) 

lẽ Xcode là điều sai trái đối với tôi khi sử dụng như một người mới? Nếu bất cứ ai có thể đề nghị một trình biên dịch tốt hơn, đó sẽ là tuyệt vời quá!

+0

Tôi không sử dụng máy Mac nên tôi không thể trợ giúp nhiều hơn nhưng đó là điều gì đó sai trái với môi trường của bạn chứ không phải mã. Bạn nên thử với GCC. – python

+2

Tình cờ, có một hàm 'main' trong cả' main.c' và 'first.c'? Hay làm thế nào bạn biên dịch chúng? Dường như bạn đang liên kết hai tệp đối tượng với nhau. –

Trả lời

12

Khi bạn tạo dự án mới trong Xcode, nó sẽ tự động cung cấp cho bạn tệp bắt đầu bằng main() trong đó. Nếu bạn đã tạo một tệp mới, chẳng hạn như first.c và sau đó dán mã thử nghiệm vào đó, bạn sẽ xác định main() hai lần và nhận được lỗi đó.

Bạn cần xóa tệp (chẳng hạn như main.c hoặc main.m) mà Xcode cung cấp trong dự án mới của bạn hoặc cắt và dán mã mẫu của bạn vào tệp đó, thay vì tạo tệp mới.

Các vấn đề liên quan