2013-02-20 6 views
16

Ich habe eine iOS App auf Xcode 4.6 und als ich vor kurzem versuchte, in den iPhone 6.1 Simulator zu bauen und zu laufen, bekam ich einen "Mach-O Linker Error". Sie fuhr fort, zu sagen:Mach-O Linker Fehler auf Xcode 4.6

ld: 17 doppelte Symbole für Architektur i386 Klirren: Fehler: Linker Befehl fehlgeschlagen mit Exit-Code 1 (Verwendung -v sehen Aufruf)

Wer weiß, wie diese zu lösen?

Vielen Dank!

+0

http://stackoverflow.com/questions/9169944/ duplicate-symbol-error –

+0

Hallo flexaddicted, Ich entschuldige mich, aber ich bin verwirrt, welche ist die Lösung in diesem Link. Ich habe mir die erste Lösung über den Fehler mit den Importanweisungen angesehen und ich habe nachgesehen und damit war nichts falsch. Gibt es noch etwas, auf das ich schauen sollte? Danke. – user1253582

+0

Es ist möglich, dass Sie einige Variablen in einer Header-Datei irgendwo definiert haben, die ein paar Mal enthalten ist. Können Sie uns mehr Informationen über die doppelten Symbole geben? – joerick

Antwort

23

Gehen Sie einfach zu "Build-Phasen" -> "Compile Sources" und suchen Sie nach Duplikaten von Klassen.

+2

Hallo edzio27, ich ging zu den "Compile Sources" Abschnitte und konnte keine doppelten Klassen finden. Ist es definitiv eine doppelte Klasse da, weil ich mehrmals nachgesehen habe und nichts gefunden habe. Vielen Dank. – user1253582

0

Ich bin mir nicht sicher, ob ich Ihnen eine Lösung geben kann, aber ich werde eine Antwort teilen, da das gleiche auch mir auf xCode 4.6 passiert ist. Ich habe einen C-Klassenheader und eine Implementierungsdatei hinzugefügt und sie in main eingefügt. Ich entschied mich dann, diesen neuen C-Klasse Header und die Implementierung zu löschen. Als ich am Ende eine neue c-Klasse/Kopfzeile mit den gleichen Namen und Funktionsaufrufen hinzugefügt habe, habe ich Ihren Fehler gefunden.

Ehrlich gesagt, könnte dies ein Fehler sein. Die einzige und schnellste Weg, ich regelte es war, ein neues Projekt zu starten, und ziehen Sie alle Klassen in.

+0

Normalerweise sollten Sie die Dateien im Finder und sogar im Projekt Navigator löschen und eine neue Klasse erstellen können. –

5

In meinem Beispiel erklärte ich

extern NSString const *keyString 

in zwei verschiedenen Dateien. Ich habe einen von ihnen umbenannt und es hat mein Problem gelöst.

17

Überprüfen Sie, ob Sie "* .m" Dateien in Ihrem #import haben! Es scheint, dass mein Fehler war ...

-1

Build-Phasen“->‚Compile Sources‘auf die Schaltfläche‚Validate-Einstellungen‘

es wird Ihr Projekt

+0

Wo ist dieser Knopf? –

+0

konnte es nicht finden!? meinst du das ernst? – MBH

0

Stellen Sie sicher, Sie beheben nicht nicht haben -instant-Methoden mit dem gleichen Namen in mehreren Klassen (also zum Beispiel, wenn ich zwei Viewcontrollers, die sehr ähnlich sind, um schnell zu bewegen ich kopiere und füge den Code von einem Viewcontroller auf den zweiten und sie beide haben Methoden namens die gleiche Sache wie: NSMutableString * filteredStringFromStringWithFilter (NSString * string, NSString * filter)) dann wird die App verwirrt, welche dieser Methoden zu verwenden, da sie beide verfügbar sind, RENAME IT auf der zweiten Klasse s und ändern Sie alle Aufrufe dieser Methode für diese Klasse und Sie haben die Verwirrung beseitigt. Wollen wir nicht alle, dass die Dinge klarer werden?

2

In meinem Fall waren es Konstanten.

NSString *const cellID = @"cellID"; 

Diese Zeile wurde in zwei .m-Dateien geschrieben. Nach dem Anhängen des Schlüsselwortes static wurde das Problem behoben.

Dieses Problem kann auch in einem neuen Projekt neu erstellt werden. Sie würden denken, dass das Definieren von Konstanten in den verschiedenen .m-Dateien keine Auswirkungen hat, da sie privat sind. Aber ich weiß nicht, wie der Compiler hinter der Szene mit Dingen umgeht. Wenn Sie auf das Problem im Problemnavigator tippen, öffnet sich darüber hinaus keine Seite im Editor, wie dies bei anderen Problemen der Fall ist. Wirklich frustrierend.

0

Wenn Sie einen Wert in beiden Klassen ändern möchten. Denken Sie daran, mit statischen Keywords zu markieren.

oder das Klirren werden solche Fehler werfen unten ohne Wert Interpretation.

Apple Mach-O Linker Error clang: error: linker command failed with exit code 1

0

Wenn Sie eine Klasse Refactoring func Sie werden auch manchmal diese Fehlermeldung erhalten. Gehen Sie einfach zu Produkt-> Reinigen und neu aufbauen.

5
  1. Xcode Beenden
  2. Starten Sie das System
  3. Wählen Sie Xcode -> Einstellungen -> Standorte
  4. In Standorte, werden Sie 'Abgeleitete Daten' sehen. Klicken Sie auf das Pfeilsymbol rechts neben dem Pfad.
  5. Dies öffnet einen Ordner mit 'Abgeleitete Daten', löschen Sie es.
  6. Reinigen Sie das Produkt und Run

    wenn noch nicht funktioniert, dann

    Build-Einstellungen> Aktivieren Bitcode> Noenter image description here