Команда 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 или что-то еще).