Warum bekomme ich "_OBJC_CLASS_ $ ..., referenziert von:" linker error, wenn ich Frameworks korrekt verlinkt habe?

8

Mein Problem

Ich bekomme "_OBJC_CLASS _ $ ..., referenziert von:" linker error beim kompilieren einiger Xcode-Projekte (es passiert sowohl in iOS- als auch Mac-Projekten) Ich habe Frameworks und Importe korrekt verknüpft.

Einrichtung

  • Ein Anwendungsziel
  • Ein Testziel
  • Alle Frameworks korrekt verknüpft

Beim Kompilieren bekomme ich folgende Linkfehler: "_OBJC_CLASS _ $ _ JGCountdownTimer", referenziert von:       objc-class-ref in JGCountdownTimerTestCase.o

für viele Klassen, die in Tests verwendet werden.

Was ich versucht habe

  • Überprüft, dass alle Importe vorhanden sind
  • Alle nicht standardmäßigen Frameworks wurden entfernt
  • Wenn ich eine Klasse für das Testziel und das App-Ziel kompiliere, wird das Problem behoben. Aber dann bekomme ich andere Warnungen vom Compiler.
John Gallagher 23.02.2012, 00:05
quelle

3 Antworten

11

Schnelle Antwort

Kopieren Sie die folgende Zeile in Ihre Build-Einstellungen und fügen Sie sie ein:

GCC_SYMBOLS_PRIVATE_EXTERN = NEIN

Suchen Sie in den Zielerstellungseinstellungen nach "Standardmäßig ausgeblendete Symbole". Für die Debug-Konfiguration möchten Sie "Nein".

Ich habe dieses Problem seit vielen Monaten ein- und ausgeschaltet und habe gerade den Grund dafür entdeckt.

    
John Gallagher 23.02.2012, 00:09
quelle
10

Ich hatte ein ähnliches Problem. Ich habe den Linker-Fehler:

_OBJC_CLASS_$_MyClass

Das Problem war, dass ich @interface für MyClass deklariert hatte, aber nicht die entsprechende @implementation deklariert hatte.

Die Lösung bestand darin, einfach

hinzuzufügen %Vor%     
W.K.S 06.05.2017 10:17
quelle
2

Nicht sicher, ob dies das Problem sein könnte, aber mit dem neuen Compiler werden alle obj-c, auf die nicht explizit verwiesen wird, nicht aus Bibliotheken verknüpft. Dies führt zu Problemen, wenn Sie beispielsweise Kategorien in Bibliotheken implementieren.

Fügen Sie "-ObjC" zu den zusätzlichen Linker-Flags im Build-Einstellungsfenster für Ihr Ziel hinzu. Achselzucken

    
nielsbot 23.02.2012 00:08
quelle