wake-up-neo.com

Xcode 9 undefinierte Symbole für die Architektur x86_64

nach dem Umstieg auf Xcode 9 erhalte ich Fehler, es sieht so aus.

 enter image description here

Ich habe die Projekt- und Klassennamen ausgeblendet, aber es gibt eine Liste der Klassen mit der Endung .o. In Xcode 8.3.2 funktioniert alles. Ich habe 2 Projekte, eines ist eine Bibliothek, die ohne Probleme baut. Ein anderes Projekt ist die Test-App, die auf die Bibliothek verweist: path-Direktive in Podfile. In beiden Projekten sind Build-Einstellungen -> Architekturen auf Standardarchitekturen festgelegt. Nur für Aktive Architekturen ist DEBUG festgelegt: Ja, RELEASE: Nein. Haben Sie dieses Problem festgestellt? Vielen Dank im Voraus für die Hilfe.

8
Jozef Vrana

Als ich build für das Profiling ausgeführt habe, funktionierte es, aber beim klassischen Build wurden Fehler erwähnt. Nach dem Durchsuchen der Protokolle scheint es ein seltsames Verhalten mit Flags zu geben, insbesondere -fprofile-instr-generate. Die Lösung bestand darin, das Flag Enable Code Coverage in den Build-Einstellungen des Bibliotheksprojekts auf Nein zu setzen. Dies schoss ins Dunkle, aber irgendwie funktionierte es.

0
Jozef Vrana

Ich bin in ein ähnliches Problem geraten. Einfach hier posten, falls es jemandem helfen kann.

Verwendete die Klasse AbcService aus einem Framework (in Swift 3 und von uns selbst geschrieben) in der Objective-c-Klasse B unserer App. Nach dem Upgrade von Xcode8/Swift3 auf Xcode9/Swift4 konnte kein Archiv für das Release erstellt werden config wegen Undefined symbols-Fehler dieser Klasse beim Linken:

Undefined symbols for architecture arm64:
   "_OBJC_CLASS_$__TtC15XxxabcServices17AbcService", referenced from:

Das Seltsame ist, es hat gut funktioniert, um die debug config zu archivieren und im Emulator zu laufen.

Fast einen Tag verbrachte ich, um die Ursache herauszufinden: Die Swift-Klasse AbcService im Framework hatte keinen Modifiziererpublic.

7
Wei WANG

Einfacher Trick hier: Gehe zu -> Gehe zum Ordner "/ Library/Developer/Xcode".

4
PrasannaKumar

Da Sie Cocoapods verwenden, müssen Sie diese höchstwahrscheinlich aktualisieren.

Das bedeutet, dass Sie in der Befehlszeile im Verzeichnis des Projekts einen pod update ausführen und dann Ihr Projekt in Xcode neu erstellen müssen.

Im Allgemeinen ist es bei Verwendung einer neuen Hauptversion von Xcode erforderlich, alle Komponenten neu zu erstellen. Ihre Fehlermeldung sagt Ihnen, dass die Objektdateien, die Sie bereits haben (die * .o-Dateien sind im Grunde das, was der Compiler aus Ihren Quelldateien erzeugt) nicht mit neu kompilierten Objektdateien kompatibel sind (der Linker, der sich in Ihrem Fall beschwert, hat die Zusammenführen oder 'Verknüpfen' aller Objektdateien).

Es kann manchmal erforderlich sein, die abgeleiteten Daten (die Xcode-Caches) zu säubern. Sie können dies tun, indem Sie zum Xcode-Menü Product gehen und während Sie die Wahltaste/Alt-Taste gedrückt halten, und wählen Sie den Menüpunkt 'Clean Build Folder'.

0
Thomas Krajacic