Ich habe jetzt die gleiche Frage mit dem obigen Titel, aber noch nicht die richtige Antwort gefunden. Ich habe den Fehler bekommen:
/Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Intermediates/TestMoboSDK-Client.build/Debug-iphonesimulator/TestMoboSDK-Client.build/Objects-normal/x86_64/MoboSDK.o
/Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Products/Debug-iphonesimulator/libMoboSDK.a(MoboSDK.o)
duplicate symbol _OBJC_METACLASS_$_MoboSDK in:
/Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Intermediates/TestMoboSDK-Client.build/Debug-iphonesimulator/TestMoboSDK-Client.build/Objects-normal/x86_64/MoboSDK.o
/Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Products/Debug-iphonesimulator/libMoboSDK.a(MoboSDK.o)
ld: 75 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Jede Hilfe wird geschätzt.
Schließlich finde ich den Grund für diesen Fehler heraus, den ich dem hinzugefügt -ObjC
habe Other Linker Flags
. Nachdem ich diesen Wert entfernt habe, kann ich mein Projekt erfolgreich erstellen, weiß aber nicht warum. Kann jemand das erklären?
ios
objective-c
xcode5
Lee
quelle
quelle
#include
oder#import
tun würden.GoogleConversionTrackingSDK-iOS-3.0
zu meinem Projekt hinzugefügt habe. Davor funktioniert es in Ordnung. Ich habe auch versucht, ihn zu entfernen, aber der Fehler tritt immer noch auf.Antworten:
Bedeutet, dass Sie dieselben Funktionen zweimal geladen haben. Da die Frage verschwindet nach dem Entfernen
-ObjC
aus ,Other Linker Flags,
dass diese Option Ergebnis , dass Funktionen Lasten zweimal bedeutet dies:von Technical Q & A.
https://developer.apple.com/library/content/qa/qa1490/_index.html
quelle
-ObjC
Flagge ab. Daher muss ich dieses Flag in meinen Projekteinstellungen beibehalten. Könnten Sie bitte eine andere Lösung vorschlagen?Für mich hat das Ändern von "Keine gemeinsamen Blöcke" von "Ja" in "Nein" (unter "Ziele"> "Build-Einstellungen"> "Apple LLVM - Codegenerierung") das Problem behoben.
quelle
NO
? Was ist der Grund dafür?Dumm, aber stellen Sie sicher, dass Sie nicht versehentlich irgendwo
#import
eine.m
Datei bearbeitet habenquelle
In meinem Fall habe ich gerade eine Header-Datei erstellt, um konstante Zeichenfolgen wie folgt zu definieren:
Ich habe dieses Szenario gelöst mit
static
:quelle
extern
anstelle von vorangestellt habestatic
:extern NSString * const kNotificationName;
. Was seltsam ist, weil du normalerweise kein solches PräfixAppStrings.h
Konstanten sind. Wenn Sie jedoch eine globale veränderbare Variable möchten, führt dies zu Chaos, da jede Quelldatei, die die Header-Datei enthält, eine eigene Kopie der Variablen hat. Es ist eine schlechte Lösung.Ich fand, dass die akzeptierte Antwort das Problem berührt, half mir aber nicht, es zu lösen. Hoffentlich hilft diese Antwort bei diesem sehr frustrierenden Problem.
"Bedeutet, dass Sie dieselben Funktionen zweimal geladen haben. Da das Problem nach dem Entfernen von -ObjC aus anderen Linker-Flags verschwindet, bedeutet dies, dass diese Option dazu führt, dass Funktionen zweimal geladen werden:"
Für Laien bedeutet dies, dass wir in unserem Projekt zwei Dateien mit genau demselben Namen haben. Vielleicht kombinieren Sie ein Projekt in ein anderes? Schauen Sie sich die Fehler über dem Fehler "Symbole duplizieren" an, um festzustellen, welcher Ordner dupliziert wurde. In meinem Fall war es BLoginViewController.
In der Abbildung unten sehen Sie beispielsweise, dass ich zwei BImageViewController habe. Für mich war dies der Grund für das Problem.
Sobald ich eine gelöscht habe, ist das Problem verschwunden :)
quelle
Ich habe das gleiche Problem. In Xcode 7.2 unter Pfad Projektziel> Build-Einstellung> Keine gemeinsamen Blöcke ändere ich es in NEIN.
quelle
Passiert auch, wenn Sie const-Variablen mit demselben Namen in verschiedenen Klassen deklarieren:
in der Datei Message.m
in der Datei Chat.m
quelle
Dies trat bei mir auf, als ich das Popup "Empfohlene Einstellungen" für ein Projekt akzeptierte, das ich vor zwei Jahren in Objective-C entwickelt hatte.
Das Problem war, dass Xcode beim Akzeptieren des Updates "Empfohlene Einstellungen" automatisch einige Build-Einstellungen änderte oder hinzufügte, einschließlich
GCC_NO_COMMON_BLOCKS = YES;
.Dies führte dazu, dass der Build mit dem
duplicate symbol
Fehler in meinem aktualisierten Projekt fehlschlug . Also habe ich geändert ,No Common Block
umNO
in meinen Build - Einstellungen und der Fehler weg.quelle
Der schnellste Weg, um das Duplikat zu finden, ist:
quelle
Die folgenden Schritte haben das Problem für mich gelöst.
quelle
Entfernen Sie -ObjC aus anderen Linker-Flags oder überprüfen Sie, ob Sie versehentlich eine .m-Datei anstelle von .h importiert haben.
quelle
.m"
ich das Projekt nach etw durchsucht habe, habe ich festgestellt, dass ich eine .m-Datei anstelle von .h importiert habe und nachdem ich behoben habe, dass es einfach funktioniert hat!Talk is cheap, show me the code!
Prost!Meine Situation mit einem in Xcode 7.3 eröffneten Legacy-Projekt war:
gefolgt von einer Liste von zwei nicht verwandten Dateien.o, dann wurde dies einige Male wiederholt, dann schließlich:
Was es für mich gelöst hat, war die Änderung der Aufzählungserklärung von:
dazu:
Wenn jemand eine Erklärung dafür hat, klären Sie mich bitte auf.
quelle
Das Definieren derselben Variablen unter @implementation in mehr als einer Klasse kann ebenfalls dieses Problem verursachen.
quelle
In meinem Fall befanden sich zwei gleichnamige Dateien am Speicherort
quelle
Es hat bei mir funktioniert
quelle
Dieses Problem trat nach der Installation von Cocoapods auf. Jetzt passiert jedes Mal, wenn ich einige Pods aktualisiere. Lösung, die ich gefunden habe:
Zum Terminal gehen:
Überprüfen Sie außerdem den Punkt "Schnelle Bibliotheken immer einbetten" in Ihren Build-Einstellungen. Es sollte "verblasst" sein, um anzuzeigen, dass die Standardkonfiguration verwendet wird. Wenn es auf ein manuelles JA eingestellt ist, klicken Sie auf Löschen, um es auf die Standardkonfiguration zurückzusetzen. Dies stoppte das Verhalten.
quelle
Für mich während der von Xcode8 empfohlenen Projekteinstellungen aktualisieren Sie "No Common Blocks" auf YES, was dieses Problem verursacht.
quelle
Heute habe ich den gleichen Fehler bekommen. Das Schlüsselwort des Fehlers ist
duplicate
. Ich behebe es durch:quelle
Stellen Sie sicher, dass Sie nicht versehentlich eine .m-Datei importiert haben. Möglicherweise möchten Sie Ihre abgeleiteten Daten im Projektfenster löschen und anschließend erstellen und erneut ausführen.
quelle
Für alle anderen, die dieses Problem haben, habe ich meine Lösung in keiner dieser Antworten gesehen.
Nach einem .pbxproj-Zusammenführungskonflikt, der manuell behoben wurde (wenn auch nur unzureichend), gab es im .pbxproj doppelte Verweise auf einzelne Klassendateien. Das Löschen dieser aus dem Projekt> Phasen erstellen> Quellen kompilieren hat alles für mich behoben.
Hoffe, das hilft jemandem auf der ganzen Linie.
quelle
ld: X duplicate symbols for architecture x86_64
. Es wurde behoben, indem die in der Fehlermeldung genannten Quelldateien entfernt und erneut zum Projekt hinzugefügt wurden.Ähnlich wie bei Juice007 hatte ich eine Variable vom Typ C in zwei verschiedenen .m-Dateien deklariert und initialisiert (die nicht importiert wurden!).
Diese Methode zum Deklarieren und Initialisieren einer Variablen, selbst in .m, selbst in @implementation, gewährt ihr jedoch globalen Geltungsbereich. Ihre Optionen sind:
Deklarieren Sie es als statisch, um den Bereich auf die Klasse zu beschränken:
Entfernen Sie die Initialisierung (wodurch die beiden Klassen die globale Variable gemeinsam nutzen):
Deklarieren Sie es als eine Eigenschaft:
Deklarieren Sie es als richtiges iVar in der @ Schnittstelle
quelle
In meinem Fall hatte ich zwei
main()
Methoden in meinem Projekt definiert und das Entfernen einer löste das Problem.quelle
Vor kurzem hatte ich Kopfschmerzen bei der Suche nach einer Fehlerquelle. Ich habe mich gefragt, als ich herausfand, dass meine App nicht kompiliert werden möchte, einfach weil ich in verschiedenen Klassen folgendes Code-Snippet hatte:
Hoffe das könnte jemandem helfen.
quelle
Ich hoffe es wird dir definitiv helfen
Ich habe den gleichen Fehler 3 doppelte Symbole für die Architektur x86_64
In meinem Fall habe ich Code aus einer anderen Datei desselben Projekts kopiert, z. Code der Am-Datei zu Bm und nach der Kompilierung bekam ich einen Fehler als Erwähnung. und ich habe Fehler durch Ändern des Namens der globalen Variablen gelöst.
Dieser Fehler trat in meinem Fall aufgrund der gleichen Deklaration für die globale Variable in beiden Dateien auf.
quelle
Ich habe den gleichen Fehler erhalten, als ich ein Pod-Repository hinzugefügt habe
für einen bereits hinzugefügten Quellcode (SWRevealViewController) von gitHub. Der Fehler wird also behoben, indem entweder der Quellcode oder das Pod-Repository entfernt werden.
Fall 2:
Beim zweiten Mal trat dieser Fehler auf, als ich eine Konstante in der .h- Datei deklarierte .
quelle
Die obigen Antworten haben bei mir nicht funktioniert. So bin ich darum herumgekommen:
1) Löschen Sie im Finder den gesamten Pods-Ordner und die Podfile.lock-Datei. 2) Schließen Sie das xcode-Projekt. 3) Führen Sie die Pod-Installation im Terminal aus. 4) Öffnen Sie das xcode-Projekt und führen Sie den Befehl clean build aus
Hat danach für mich gearbeitet.
quelle
Das gleiche Problem tritt bei mir auf, als ich das Lob-Projekt in mein Projekt integriert habe.
Eigentlich hat lob project auch die AFNetworking-Dateien, also entferne ich die .m-Dateien aus lob lob.
Tatsächlich stehen .m-Dateien in Konflikt mit den POd / AFNetworking / .m-Dateien meines Projekts
quelle
In Xcode 6.3.2. Ich habe alle Möglichkeiten wie unten geprüft
1: Ich habe keine .m-Datei in mein Projekt importiert.
2:
-ObjC
Vom Flag "Anderer Linker" entfernt .3: Alle meine abgeleiteten Daten wurden entfernt .
Trotzdem bekomme ich den gleichen Fehler. Ich habe diesen Fehler behoben, indem ich eine Variablendeklaration aus der
.pch
Datei entfernt habe . In meinem Fall habe ichAppDelegate
Objekt in.pch
Datei deklariert . Endlich habe ich einen Grund gefunden, der einen Fehler verursacht. Also entferne ich die Deklaration einer Variablen aus der PCH-Datei und den Charme meines Projekts.quelle
Ein weiterer dummer Fehler, der diesen Fehler verursacht, sind wiederholte Dateien. Ich habe versehentlich einige Dateien zweimal kopiert. Zuerst ging ich zu Ziele -> Phasen erstellen -> Quellen kompilieren. Dort habe ich einige Dateien auf dieser Liste zweimal und ihre Speicherorte bemerkt.
quelle
Ich habe heute auch diesen Fehler. Das liegt daran, dass ich einen
.m
konstanten Wert in einer Datei definiert habe. Aber ich habe eine andere.m
Datei definiert , die auch diesen konstanten Wert enthält. Das bedeutet, dass sie zwei gleiche konstante Werte hat. Dieser Fehler tritt also auf. Und meine Lösung ist das Hinzufügen eines Schlüsselworts "static
" vor dem const-Wert.Und dann baue ich das Projekt, es wird diesen Fehler nicht melden.
quelle