2014-09-19 3 views
13

Я очень новичок в программировании на C и C++, и у меня очень мало опыта в программировании (мой фон основан на Интернете). Но я пытаюсь поэкспериментировать с C/C++ и Xcode ... Так что я нашел этот код (и многие подобные варианты онлайн):ld: 1 дубликат символа для архитектуры x86_64

#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

+2

Возможно, существует функция 'main' как в' main.c', так и 'first.c'? Или как вы их компилируете? Кажется, вы связываете два объектных файла вместе. –

ответ

12

Когда вы создаете новый проект в Xcode, он автоматически дает вам начальный файл с main(). Если вы создали новый файл, например first.c, а затем вставили в него свой тестовый код, вы будете определять main() дважды и получить эту ошибку.

Вам необходимо либо удалить файл (например, main.c, либо main.m), который Xcode предоставляет в вашем новом проекте, либо вырезает и вставляет ваш образец кода в этот файл, а не создает новый.

Смежные вопросы