2009-07-18 16 views
8

Ich habe Kategorien in meiner statischen Bibliothek. Jeder Anwendungsentwickler sollte -ObjC-Flag auf "Other Linker Flags" setzen, um meine statische Bibliothek ordnungsgemäß zu verwenden. Es funktioniert gut für iPhone Gerät/iPhone Simulator 2.x und iPhone Simulator 3.0. Aber es stürzt für iPhone 3.0 ab. Wie geschrieben in this article ist es neuer Linker Bug. Sie schlagen vor, ein Linker-Flag zu verwenden: -all_load. Aber wenn ich dieses Flag hinzufüge, scheitert Build auch, weil es doppelte Symbole gibt.Kategorien in der statischen Bibliothek für das iPhone 3.0 3.0

Wie verwendet man Kategorien in statischen Bibliotheken für iPhone 3.0? Irgendwelche Vorschläge?

+0

Ich habe das gleiche Problem, haben Sie es gelöst? – thierryb

+0

Im neuesten Linker scheint dies behoben worden zu sein und -all_load ist nicht länger notwendig. – drekka

Antwort

10

Wir ran into the same problem (unter 3.0, -ObjC nicht mehr in Kategorien verknüpft) innerhalb der Core Plot framework. Alles, was ich sagen kann, ist, dass wir die Option -all_load den Other Linker Flags in der Zielanwendung hinzufügen konnten und damit die Laufzeitfehler beseitigten. Wir haben keine Warnungen für doppelte Symbole angezeigt.

Ich habe einen Fehlerbericht für das Linker-Verhalten eingereicht, wie ich sicher bin, andere haben.

0

Wenn Sie -all_load zu Ihren anderen Linker-Flags hinzufügen, stellen Sie sicher, dass alle Frameworks, die die Bibliothek verwendet, mit Ihrer Ziel-App verknüpft sind. Andernfalls wird das Kompilieren fehlschlagen. In meinem Fall hatte ich eine Kategorie für MKMapView und verband das MapKit Framework nicht mit meiner Ziel-App, daher wurde die Klasse, zu der die Kategorie gehört, zur Build-Zeit nicht gefunden.

0

Ich stieß auf das gleiche "doppelte Symbole" Problem. Ohne das Flag -all_load mussten wir alle Bibliotheken, mit denen unsere Bibliothek verlinkt ist, in die App-Link-Zeile aufnehmen. Durch das Entfernen dieser Elemente aus der App-Link-Zeile wurde das Problem behoben.

1

Es ist ein Fehler, der verursacht wird, indem man versucht, einen anderen Fehler mit einem Hack zu beheben. Der -all_load-Fix für den Kategorie-Fehler ist ein totaler Hack.

Weitere Informationen finden Sie unter here.