Problem beim Ableiten von einer eigenen Klasse

  • Problem beim Ableiten von einer eigenen Klasse

    Hallo!

    Ich habe folgendes Problem: In einem Projekt verwende ich eine eigene statische Lib (.a-Datei). (Hinweis: iPhone-Projekt)

    Diese Lib besteht aus drei Klassen, von der Klasse 1 von NSObject und die Klassen 2 und 3 von Klasse 1 abgeleitet werden.

    Nun bekomme ich beim Linken den Fehler, dass beide Klassen 2 und 3 nicht verlinkt werden können, weil die Symbole fehlen (_OBJC_CLASS_$_... usw., dann "ld: symbol(s) not found" und "collect2: ld returned 1 exit status").

    Was mache ich hier falsch? Ist es nicht möglich, mehrer Klassen in einer statischen Lib zu verwenden bzw. diese Struktur aufzubauen?

    Danke!
    Frank
  • Wenn Du die statische Lib mit einer älteren Xcode-Version (pre iOS 4) gebaut hast, solltest Du sie neu erzeugen. Aus irgendeinem Grund mag das neue Xcode die Binaries nicht mehr so ganz.

    Damit der Linker alle Symbole lädt, solltest Du die Flags -all_load -ObjC setzen.
    „Meine Komplikation hatte eine Komplikation.“
  • Vielen Dank, die Flags werde ich morgen testen.

    Ich habe exzessiven Gebrauch von "Clean all targets" gemacht, ich denke also, dass von dieser Seite keine Probleme mehr kommen sollten. Zumal ich erst heute die neue Klassenstruktur gebaut habe ... Meine Vermutung ist, dass der Compiler die Klassen einfach weggeputzt hat, denn in der Lib werden sie nicht genutzt, sondern nur deklariert.

    Danke!
  • ###EDIT
    Gelöst. Eigene Blödheit. Naja, kommt vor ;)
    ###

    OK, Ihr dürft nun mit dem Finger auf mich zeigen und mich einen blutigen Anfänger schimpfen. Aus irgend einem Grund habe ich die "Direct Dependency" im Projekt verloren - das habe ich nun behoben.

    Es zeigt sich, dass meine statische Lib augenscheinlich gar nicht sauber compiliert wird. Die Build-Results sagen nach[i] dem Compilieren der einzelnen .m-Files der statischen Lib für armv6 und armv7:

    Quellcode

    1. Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/libtool failed with exit code 1


    Daher klappt das Linking logischerweise auch nicht.

    Nur - wie werde ich das Problem bloß wieder los?!

    ;(

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von fwtag ()