2009-04-29 7 views
2

ich diesen FehlerWie wird der Fehler Undefined Symbols aufgelöst?

Undefined symbols: 
".objc_class_name_MyClass", referenced from: 
    [email protected][email protected][email protected] in infoViewController.o 
ld: symbol(s) not found 
collect2: ld returned 1 exit status 

Wenn unterhalb der statischen Methode verweisen:

[MyClass ClickComment:self.navigationController]; 

MyClass in einer statischen Bibliothek definiert ist, die ich in meiner app Projekt Referenzierung bin. Wenn ich anfange "[MyClass" ... einzugeben, erhalte ich Hinweise zur Nachricht. Das App-Projekt kennt MyClass und welche Methoden darauf definiert sind. Trotzdem erhalte ich den obigen Fehler. Durch das Auskommentieren dieses Aufrufs kann das Projekt ohne Fehler erstellt werden.

In der statischen Bibliothek habe ich eine .h-Datei, die auf alle .h-Dateien der Bibliothek verweist. Auf diese Weise muss das App-Projekt nur auf eine .h-Datei aus der statischen Bibliothek verweisen. Das statische Bibliotheksprojekt hat auch eine App. Ich benutze es, um die statische Bibliothek zu testen. Ich kann den obigen Anruf gut machen. Normalerweise sehe ich diese Art von Fehlern, wenn die statische Bibliothek eine Device/Debug-Version erstellt hat und das App-Projekt Build-Simulator/Debug hat. Beide Builds sind jedoch synchron.

Ich weiß, dass es ein Referenzproblem gibt, aber ich bin nicht sicher, wie es gelöst werden kann. Irgendwelche Vorschläge?

Antwort

5

Das bedeutet, dass die Headerdateien während der Kompilierung gefunden werden, der Linker jedoch die statische Bibliothek nicht kennt. Stellen Sie sicher, dass Ihre statische Bibliothek unter "Ziele -> YourMainTarget> Binär mit Bibliotheken verknüpfen" in der Projektansicht aufgeführt ist.

Siehe http://developer.apple.com/tools/XCode/XCodeprojects.html

+0

Ich habe es jetzt funktioniert. Vor allem in der statischen Bibliothek für MyClass musste ich MyClass.m ein paar #import-Anweisungen hinzufügen. Ich fand das merkwürdig, da sich alle #import-Anweisungen in der oben erwähnten .h-Datei befinden, auf die von der PCH-Datei des Projekts verwiesen wird, die ich in Compiled Headers des Bibliotheksziels sehe. Irgendwo gibt es immer noch eine Trennung. – 4thSpace

Verwandte Themen