Ich habe vor kurzem auf iPhone SDK 4.0 aktualisiert und kann nicht mehr mein Projekt für den iPhone-Simulator erstellen. Das Problem ist, dass Klassen von einem meiner eigenen Bibliotheken nicht mehr von ld zu finden:Linker Fehler (nur Simulator) mit eigener Bibliothek nach Update auf iPhone SDK 4.0
"_OBJC_CLASS_$_Book", referenced from:
objc-class-ref-to-Book in Category.o
(maybe you meant: ...)
ld: symbol(s) not found
collect2: ld returned 1 exit status
ich schon einige anderen Beiträge zu ähnlichen Problemen lesen, wie z.B. here. "Leider", mein Problem hat nichts mit einem SDK-Framework zu tun, sondern mit meiner eigenen lib, so dass die dort genannten Lösungen hier nicht anwendbar sind.
Die Bibliothek ist unter "Link Binary mit Bibliotheken" meines Ziels enthalten, Bibliothek Suchpfade sind korrekt (überprüft dies mit XCode und mit einem einfachen Texteditor direkt in meiner Projektdatei) und korrekt zum gcc Befehl hinzugefügt.
Ich benutze iPhone Simulator 3.2 als Base SDK, aber das gleiche Problem tritt bei SDK 4.0. Auch dies funktioniert mit meinem Geräteziel, nicht jedoch mit meinem Simulatorziel. Es funktionierte jedoch mit beiden, bevor ich von iPhone SDK 3.2 auf 4.0 aktualisierte. Ich konnte diesen Fehler auch reproduzieren, indem ich ein neues Projekt mit nur einer Datei und der verknüpften Lib erstellte. Allerdings sollte die Lib in Ordnung sein, da es mit Simulator 3.2 funktionierte, bevor ich XCode und mein SDK aktualisierte.
Weitere Fakten: Mac OS X 10.6.3, XCode 3.2.3 64-Bit, iPhone OS 3.2, GCC 4.2
Jede Hilfe sehr geschätzt werden würde.
EDIT:
Nach SDK Neuinstallation 3.2, alles wieder zu erwarten war. Es ist zu beachten, dass die SDKs im Ordner /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs bei jeder Installation überschrieben werden. Ich habe dann versucht, SDK 4.0 erneut zu installieren, und derselbe Fehler wie oben trat auf. Ich habe an meinem Projekt nichts geändert und habe immer 3.2 als Base SDK verwendet.
Das Problem kann daher möglicherweise bis auf die folgenden Optionen verengt werden:
- Apfel verändert etw. im Simulator SDK 3.2, die das Problem
- eine Änderung in XCode 3.2.3 verursacht das Problem
- falsch/fehlt Compiler-Flags beim Aufbau meiner eigenen Bibliothek (die Fahnen, jedoch würde nur dazu führen, Probleme mit einer veränderten SDK verursacht oder die geänderte IDE)
ich habe auch einen Ordner diff auf /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk für die alte und die neue Version dieses Ordners. Es stellte sich heraus, dass es innerhalb des "gleichen" SDK tatsächlich geringfügige Änderungen gibt. Ich denke aber immer noch, dass es ein IDE/Compiler-Flag-Problem ist.
Irgendwelche Ideen? Ich möchte nicht für immer bei 3.2 bleiben ...
Ich hatte das gleiche Problem. Mysteriös geschah es nur für das "Release" aber auch nicht für den "Debug" Build, obwohl ich nach dem Update auf das 4.0 SDK nichts geändert habe. Das habe ich jedoch noch nicht untersucht. – Stiefel