Beim Versuch, mit Xcode zu kompilieren, wird folgende Fehlermeldung angezeigt:
**Ld /Users/doronkatz/Library/Developer/Xcode/DerivedData/iKosher-bphnihrngmqtkqfgievrrumzmyce/Build/Products/Debug-iphonesimulator/iKosher.app/iKosher normal i386
cd /Users/doronkatz/Sites/xCode/iKosher
setenv MACOSX_DEPLOYMENT_TARGET 10.6
setenv PATH "/Xcode4/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Xcode4/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Xcode4/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2 -arch i386 -isysroot /Xcode4/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.2.sdk -L/Users/doronkatz/Library/Developer/Xcode/DerivedData/iKosher-bphnihrngmqtkqfgievrrumzmyce/Build/Products/Debug-iphonesimulator -L/Users/doronkatz/Sites/xCode/iKosher -F/Users/doronkatz/Library/Developer/Xcode/DerivedData/iKosher-bphnihrngmqtkqfgievrrumzmyce/Build/Products/Debug-iphonesimulator -filelist /Users/doronkatz/Library/Developer/Xcode/DerivedData/iKosher-bphnihrngmqtkqfgievrrumzmyce/Build/Intermediates/iKosher.build/Debug-iphonesimulator/iKosher.build/Objects-normal/i386/iKosher.LinkFileList -mmacosx-version-min=10.6 -all_load -ObjC -Xlinker -objc_abi_version -Xlinker 2 -lz -framework Security -framework CFNetwork -framework CoreData -framework Foundation -framework UIKit -framework CoreGraphics -framework QuartzCore -o /Users/doronkatz/Library/Developer/Xcode/DerivedData/iKosher-bphnihrngmqtkqfgievrrumzmyce/Build/Products/Debug-iphonesimulator/iKosher.app/iKosher
Undefined symbols for architecture i386:
"_UTTypeCreatePreferredIdentifierForTag", referenced from:
+[ASIHTTPRequest mimeTypeForFileAtPath:] in ASIHTTPRequest.o
"_UTTypeCopyPreferredTagWithClass", referenced from:
+[ASIHTTPRequest mimeTypeForFileAtPath:] in ASIHTTPRequest.o
"_kUTTagClassMIMEType", referenced from:
+[ASIHTTPRequest mimeTypeForFileAtPath:] in ASIHTTPRequest.o
"_kUTTagClassFilenameExtension", referenced from:
+[ASIHTTPRequest mimeTypeForFileAtPath:] in ASIHTTPRequest.o
"_SCNetworkReachabilitySetCallback", referenced from:
-[Reachability startNotifier] in Reachability.o
"_SCNetworkReachabilityScheduleWithRunLoop", referenced from:
-[Reachability startNotifier] in Reachability.o
"_SCNetworkReachabilityUnscheduleFromRunLoop", referenced from:
-[Reachability stopNotifier] in Reachability.o
"_SCNetworkReachabilityCreateWithName", referenced from:
+[Reachability reachabilityWithHostName:] in Reachability.o
"_SCNetworkReachabilityCreateWithAddress", referenced from:
+[Reachability reachabilityWithAddress:] in Reachability.o
"_SCNetworkReachabilityGetFlags", referenced from:
-[Reachability currentReachabilityStatus] in Reachability.o
-[Reachability isReachable] in Reachability.o
-[Reachability isConnectionRequired] in Reachability.o
-[Reachability isConnectionOnDemand] in Reachability.o
-[Reachability isInterventionRequired] in Reachability.o
-[Reachability isReachableViaWWAN] in Reachability.o
-[Reachability isReachableViaWiFi] in Reachability.o
...
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status**
Ich bin mir nicht sicher, was es bedeutet.
quelle
Ich habe es mit der folgenden Methode gelöst (für XCode 4):
1) Wählen Sie das Projekt im Projektnavigationsfenster aus, in dem rechts die Projektzusammenfassung angezeigt wird
2) Wählen Sie die Erstellungsphase der 4. Registerkarte
3) Wählen Sie die Option Binär mit Bibliothek verknüpfen
4) Fügen Sie das Framework hinzu, für das Sie es erhalten
5) Verschieben Sie das Framework vom Hauptordner in den Framework-Ordner
6) Erstellen Sie es erneut und Fehler sind verschwunden.
quelle
Das Problem ist, dass die Zielmitgliedschaft für das hinzugefügte Feld im App-Ziel fehlt. Wählen Sie also die Datei aus und fügen Sie das Kontrollkästchen für die Zielmitgliedschaft hinzu
Zum Beispiel, wenn der Fehler in einer Methodendefinition in common.m angezeigt wird
quelle
Ich dachte, ich würde meine Lösung dafür hinzufügen, nachdem ich ein paar Stunden mit demselben Fehler verbracht habe :(
Die oben genannten Leute hatten Recht, dass Sie als Erstes überprüfen sollten, ob Sie das Hinzufügen von Frameworks verpasst haben. Weitere Informationen finden Sie in den obigen Schritten von Pruthvid.
Es stellte sich heraus, dass mein Problem darin bestand, dass eine Kompilierungsklasse fehlte, nachdem ich sie gelöscht und später wieder hinzugefügt hatte.
Überprüfen Sie Ihre "Quellen kompilieren" wie für die gemeldeten Fehlerklassen gezeigt. Fügen Sie fehlende Klassen hinzu, die Sie erstellt haben.
quelle
Stellen Sie sicher, dass das fehlende Framework tatsächlich unter "Ziel / Erstellungsphasen / Binär mit Bibliotheken verknüpfen" aufgeführt ist, wenn Sie es nicht einfach hinzufügen. Wie bereits erwähnt, weist dies normalerweise auf ein fehlendes Framework hin.
In meinem Projekt wurden zwei identische Frameworks aufgelistet. Als ich eines davon entfernte, trat dieser Fehler auf, da es auch aus der Liste "Binär mit Bibliotheken verknüpfen" entfernt wurde. Ich habe wieder hinzugefügt und das Problem ist verschwunden (und ich habe immer noch zwei Frameworks aufgelistet)
quelle
Ich habe einen ähnlichen Fehler in meinem Projekt behoben, indem ich die Build-Einstellungen> Architekturen für ALLE meine Ziele geändert habe.
Das Problem: Als ich ein Upgrade von Xcode 4.4 auf Xcode 4.5 durchführte, wurde mein Projekt auf dem Simulator noch einwandfrei kompiliert, auf Geräten jedoch nicht. Auf Geräten wurde der Fehler "Symbol (e) für Architekturarmv7s nicht gefunden" sowie der irreführende Befehl "Apple Mach-O Linker Error" und "clang: error: linker" mit Exit-Code 1 fehlgeschlagen (verwenden Sie -v, um den Aufruf anzuzeigen) ). "
Die Ursache (in meinem Fall): Mein Projekt hatte mehrere Ziele, und obwohl die Build-Einstellungen> Architekturen für die Hauptziel so eingestellt waren, dass sie die armv7s-Architektur enthalten, hing das Hauptziel von einem anderen Ziel ab (aufgeführt unter Build-Phasen> Abhängigkeiten) und Ich hatte nicht daran gedacht, die Build-Einstellungen> Architekturen für dieses andere Ziel zurückzusetzen, und ich musste dies ändern, um armv7s einzuschließen. Ich nehme an, der Simulator und das Gerät laufen auf unterschiedlichen Architekturen, und deshalb war der Simulator in Ordnung, während das Gerät nicht in Ordnung war.
quelle
Hängt Ihr Projekt von einem anderen Projekt ab, und ist dieses Ziel in diesem Projekt so eingerichtet, dass es eine direkte Abhängigkeit von Ihrem Hauptziel darstellt? Wenn dies der Fall ist und die Abhängigkeit nicht eingerichtet ist, wird das abhängige Ziel möglicherweise nicht für alle Konfigurationen (dh den Simulator) erstellt.
Nur eine wilde Vermutung.
quelle
Eine andere Situation, die dieses Problem verursachen kann, besteht darin, dass Ihr Code C ++ aufruft oder von C ++ - Code aufgerufen wird. Ich hatte ein Problem mit der Dienstprogrammfunktion meiner eigenen .c-Datei, die beim Aufruf von Obj-C als "Symbol nicht gefunden" angezeigt wurde. Das Update bestand darin, den Dateityp zu ändern: Verwenden Sie in Xcode 4 den erweiterten Infobereich, um den Dateityp auf "Objective-C ++ Source" festzulegen. Verwenden Sie in Xcode 3 "Get Info", um den Dateityp in "source.cpp.objcpp" zu ändern.
quelle
In meinem Fall hat keine der veröffentlichten Lösungen funktioniert. Ich musste das Projekt löschen und einen neuen Checkout vom SVN-Server durchführen . Glücklicherweise wurde das Projekt in einem Versionskontrollsystem gehostet. Ich weiß nicht, was ich sonst tun würde.
quelle
In einem C ++ Projekt eine definierte Verwendung templatized Klasse, während den gleichen Fehler zu erhalten, ich CPP - Datei mit der definierten ausgewählten templatized Klasse im Projekt - Navigator, dann Löschen> Entfernen Referenz. Auch die zugehörige .h-Datei, auf die im Projekt noch verwiesen wird, muss die Anweisung #include für die .cpp wie folgt enthalten:
Wenn Sie sehen möchten, finden Sie ein einfaches Projektbeispiel auf github :
Dies ist ein kleiner Trick der Indirektion, und ich erinnere mich nicht an die ursprüngliche Quelle dieser Problemumgehung.
quelle
Wenn dieser Fehler plötzlich auftritt, fehlen dem Projekt einige Frameworks. Für Bibliotheken und abhängige Projekte können Frameworks erforderlich sein. Wenn Sie also kürzlich eines hinzugefügt haben, kann dies zu diesem Fehler führen.
Um Frameworks hinzuzufügen, klicken Sie mit der rechten Maustaste auf den Projektnamen in der Projektansicht, wählen Sie Hinzufügen und dann Vorhandene Frameworks aus der Liste. Suchen Sie dann das Framework mit den fehlenden Symbolen.
Die andere Sache ist, wenn Sie Klassen zu den kompilierten Ressourcen hinzugefügt und diese Klassen aus dem Projekt entfernt haben, erscheint der Fehler. Am besten entfernen Sie die Klassen aus den Kompilierungsressourcen (Build-Einstellungen -> Kompilierungsquellen), die aus dem Projekt entfernt wurden.
In meinem Fall habe ich die Admob-Klassen im Projekt hinzugefügt und das Projekt kompiliert. In einem späteren Fall möchte ich keine Admobs in mein Projekt aufnehmen, daher habe ich die Referenzen der Admob-Klassen aus meinem Projekt gelöscht. Als dieser Fehler auftrat, löschte ich die .m-Klasse meines Admob aus den Kompilierungsressourcen, um dieses Problem zu lösen.
quelle
Dies ist mir passiert, als ich versucht habe, über das PSPDFKIT zu kopieren in mein Projekt . Ich habe alle Anweisungen auf der Website + alle Vorschläge auf dieser Seite befolgt. Aus irgendeinem Grund gab es immer wieder den obigen Fehler. Das Problem war, dass die Nachricht in der Fehlermethode nur in der Binärdatei angezeigt wurde ( offensichtlich habe ich keinen Zugriff auf den Quellcode (b / c muss ich dafür bezahlen).
Ich habe dies jedoch auf der Anweisungsseite bemerkt:
Also ging ich zu den Eingeweiden dieser Konfigurationsdatei und fand Folgendes:
Dann ging ich zu dem vom Autor der genannten Bibliothek bereitgestellten Beispielprojekt. Dabei stellte ich fest, dass die vorherigen Flags in meinen Build-Einstellungen wörtlich auf die anderen Linker-Flags kopiert wurden. In meinem Projekt waren sie es jedoch nicht! Ich habe sie einfach kopiert und in die Build-Einstellungen meines Projekts eingefügt, andere Linker-Flags und alles hat funktioniert!
Take-Away-Punkt: Wenn Sie sich bei Ihrem Setup auf eine .xcconfig-Datei verlassen, überprüfen Sie diese anhand einer Beispielcodequelle oder Ähnlichem und stellen Sie sicher, dass sie tatsächlich angewendet wurde. In meinem Fall wurde sie nicht richtig angewendet
quelle
Ein weiterer Grund, warum dies passieren könnte, ist das UPGRADEN eines SDK.
Wenn Sie einfach die Gruppe löschen und dann den neuen Ordner per Drag & Drop in das Projekt ziehen, enthält der "Bibliothekssuchpfad" beide SDKs. Löschen Sie zum Lösen einfach den alten SDK-Pfad.
quelle
Ich hatte einen CLGeocoder verwendet, ohne ein Core.Location Framework hinzuzufügen. Grundsätzlich kann dieser Fehler mehrere Dinge bedeuten. Ich hoffe das hilft jemand anderem.
quelle
Ich war schon einmal verblüfft, nur um festzustellen, dass ich eine reine Datenschnittstelle hinzugefügt und vergessen habe, den leeren @ Implementierungsblock hinzuzufügen.
quelle
Ist dieses Problem in Xcode 11 aufgetreten. Das Problem wurde behoben, indem das Mindestbereitstellungsziel von 10.0 auf 11.0 geändert wurde. Ich hoffe, dies hilft jemandem :)
quelle