2012-07-30 9 views
11
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: hinzugefügt \ + Zeilenumbrüche zur besseren LesbarkeitLinker Befehl mit Exit-Code fehlgeschlagen 1: doppeltes Symbol

Ich habe keine Ahnung, was mit meinem Projekt falsch ist, kann jemand helfen?

+1

Well : Der Linker beschwert sich, dass das Symbol "_velocityX" in zwei Objekten definiert ist: ".../Objects-normal/i386/Level2ViewController.o" und ".../Objects-normal/i386/Level1ViewController. o "Vielleicht haben Sie das Objekt beim Linker-Aufruf zweimal angegeben? Oder Sie haben eine .C-Datei hinzugefügt? Oder haben Sie abgestandene Objekte herumschweben? – wildplasser

Antwort

1

Sie haben wahrscheinlich double _velocityX in einer Header-Datei sowohl Level1ViewController.c und Level2ViewController.c enthalten, wenn der Header extern double _velocityX und genau ein der .c Dateien sollten double _velocityX haben sollte. (Angenommen, der Typ von _velocityX ist double, was vernünftig schien, und vorausgesetzt, dies ist entweder C oder C++ und nicht Fortran oder etwas).

22

Ich hatte das gleiche Problem. Aber es war meine Schuld. :). Möglicherweise haben Sie eine #import file.m statt #import file.h geschrieben. So kompiliert die Ressource die Symboldatei.o. - Das ist es! ^^ Um es zu sehen, entfernen Sie diese Fehlerdatei, bauen -> Fehlerzeile anzeigen -> dann kopieren Sie es erneut.

+1

haha ​​... wie dumm :) danke dafür. Ich hätte diesen Tippfehler nie bemerkt. – d2burke

+1

@bao du hast es genagelt! –

+1

Das war mein Problem auch. Danke vielmals. – Ali

1

Ich stieß auf denselben Fehler beim Versuch, ein paar Frameworks in meine App zu integrieren.

Zuerst benutzte ich Sparrow - eine Grafikbibliothek, und standardmäßig hatte ich eine main.m-Datei, es ging alles gut, bis ich versuchte, Parse zu integrieren, was auch vom FacebookSDK abhing. Innerhalb der FacebookSDK-Ordner gibt es eine Sample-App namens Scrumptious mit einer main.m, die meine Probleme verursacht hat. Ich habe das Beispiel-Apps-Verzeichnis entfernt und alles hat gut funktioniert.

2

Ich hatte den gleichen Fehler, weil ich eine Konstante mit dem gleichen Namen in zwei separaten .m-Dateien definiert habe. Sobald ich den Namen in einem von ihnen änderte, kompilierte er.

Zum Beispiel in meinem ViewController.m ich hatte:

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

und in meinem Menu.m:

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

Ich änderte meine Menu.m zu:

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