Команда Linker Сбой с кодом выхода 1: дубликат символа

ld: duplicate symbol _velocityX in \
/Users/Student/Library/Developer/Xcode/DerivedData/finalproject-ffzevekmatxvhrgisgeleoijyllr/Build/Intermediates/finalproject.build/Debug-iphonesimulator/finalproject.build/Objects-normal/i386/Level2ViewController.o \
and \
/Users/Student/Library/Developer/Xcode/DerivedData/finalproject-ffzevekmatxvhrgisgeleoijyllr/Build/Intermediates/finalproject.build/Debug-iphonesimulator/finalproject.build/Objects-normal/i386/Level1ViewController.o \
for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

UPDATE: добавлены \+ новые строки для чтения

Я не знаю, что не так с моим проектом, может ли кто-нибудь помочь?

Ответ 1

У меня была такая же проблема. Но это была моя ошибка.:). Возможно, вы записали #import file.m вместо #import file.h. Таким образом, Compiles Resource будет дублировать символ file.o. - Это! ^^ Чтобы увидеть это, вы удалите этот файл ошибки, построите → Покажите строку ошибки → , затем переустановите его.

Ответ 2

У меня была такая же ошибка, потому что я определил константу с тем же именем в двух отдельных файлах .m. Как только я сменил имя в одном из них, он скомпилирован.

Например, в моем ViewController.m у меня было:

#import "ViewController.h"
const int IPHONE4 = 480;

и в моем Menu.m:

#import "Menu.h"
const int IPHONE4 = 480;

Я изменил свой Menu.m на:

#import "Menu.h"
const int IPHONE4H = 480;

Ответ 3

Я столкнулся с этой же ошибкой, пытаясь интегрировать несколько фреймворков в свое приложение.

Сначала я использовал Sparrow - графическую библиотеку, и по умолчанию у меня был файл main.m, все было в порядке, пока я не попытался интегрировать Parse, который также зависел от FacebookSDK. В папках FacebookSDK есть приложение примера под названием Scrumptious с main.m, которое также стало причиной моих проблем. Я удалил образец каталога приложений и все построено отлично.

Ответ 4

У вас, вероятно, есть double _velocityX в заголовочном файле, включенном как Level1ViewController.c, так и Level2ViewController.c, когда заголовок должен иметь extern double _velocityX, и ровно один из файлов .c должен иметь double _velocityX. (Предполагая, что тип _velocityX равен double, что казалось разумным, а также предполагая, что это либо C, либо С++, а не Fortran или что-то еще).