Ich teile ein Xcode-iPhone-Projekt in mehrere kleinere Projekte zur Wiederverwendung von Code auf. Die Struktur sieht wie folgt aus:Verknüpfungsfehler bei iPhone-App mit Querverweisen auf mehrere statische Bibliotheken
+------------+
| App |
+------------+
|
+------------------+
| |
+--------------+ +--------------+
| Static Lib A | | Static Lib B |
+--------------+ +--------------+
| |
+----------------+
|
+--------------+ +----------------+
| Static Lib Z |--| Static Lib KAL |
+--------------+ +----------------+
Alles kompiliert korrekt, aber sobald die App verknüpft ist, kann der Linker nicht zwei Symbole der KAL (die Open-Source-Kalender lib) Bibliothek. Jede Bibliothek hat einen Querverweis und alle Archive werden der Build-Phase "Binär mit Bibliotheken verbinden" hinzugefügt.
Die Fehler sind:
undefinierte Symbole:
"_OBJC_CLASS _ $ _ KalViewController", verwiesen von:
objc-Klasse-ref-to-KalViewController in libA.a (AViewController.o)
„_OBJC_CLASS_ $ _KalDate“, verwiesen von:
objc-Klasse-ref-to-KalDate in libA.a (AViewController.o)
ld: Symbol (e) nicht
collect2 gefunden: ld returned 1 exit status
Ich benutze eine Klasse von LibZ in LibA's AViewController, der wiederum eine Klasse in LibKAL benutzt.
Alle Ideen sind herzlich willkommen.
PS: die Trennung von A und B ist einfach weil nicht jeder Build der App die Funktionalität der beiden benötigt.