Xcode|Cocoa: Klassen aus static library nutzen

Pak

Pak

Aktives Mitglied
Thread Starter
Dabei seit
16.07.2003
Beiträge
121
Reaktionspunkte
12
Ich möchte in einer static library ein paar Objective-C-Klassen definieren, die ich in mehreren Cocoa-Anwendungen nutzen möchte. Dazu habe ich ein Xcode-Projekt (static library) angelegt, das ich als Abhängigkeit in einem zweiten Projekt (Cocoa-Application) eingetragen habe.

Hierbei war ich so vorgegangen wie Fritz Anderson das in seinem Buch Xcode 3 Unleashed beschrieben hat. Ich schätze das funktioniert auch richtig, jedesmal wenn die Application gebaut wird, wird auch (falls nötig) die static library zuvor kompiliert und in das fertige .app mit verpackt.

Ich verstehe nur überhaupt nicht, was ich noch tun muss, damit ich in meiner Cocoa-Application die Klassen aus der static library nutzen kann.

In der static library gibt es die Klasse LibraryClass mit der Klassenmethode
Code:
+(void) helloWorld;

Das Bild im Anhang zeigt den gewünschten Aufruf. Dazu hätte ich nun oben in der Datei noch
Code:
#import "LibraryClass.h"
eingetragen, doch dann beschwert sich der Compiler, dass LibraryClass.h nicht bekannt ist.

Hat da jemand vielleicht einen schlauen Tipp für mich, oder ist die ganze Vorgehensweise mit der static library schon falsch gewesen? Im Zip-file findet sich genau dieses Minimalbeispiel.
 

Anhänge

  • library.jpg
    library.jpg
    68,3 KB · Aufrufe: 83
  • Xcode-Projekte.zip
    54,2 KB · Aufrufe: 75
  • Gefällt mir
Reaktionen: below
Erstmal Lob: Die Frage ist gut gestellt, und das Beispielprojekt macht es leicht, die Antwort zu prüfen.

So, der Compiler hat immer recht. Auch hier. Woher soll er denn wissen, wo "LibraryClass.h" ist?

Der einfachste Weg, ihm das zu sagen, ist die "LibraryClass.h" Datei auch in Dein CocoaApplication Project zu ziehen. Du könntest das auch mit "User Header Search Paths" angeben.

Hope that helps

Alex
 
  • Gefällt mir
Reaktionen: Pak
Vielen Dank für dein Hilfe, Alex. Ich hatte gesehen, dass du online bist und gehofft, dass du noch antworten würdest.

Ich habe deine zwei Alternativen ausprobiert, und sie funktionieren beide (das wusstest du schon :D).

Die Headerdateien in das zweite Projekt reinziehen, war etwas, das ich versuchte zu vermeiden, weil ich erwartet hatte, dass das recht umständlich ist oder Redundanz erzeugt. Aber die Dateien werden ja nur referenziert, und die Referenzen kann man ja in einem Unterordner sammeln, damit die Liste der Klassen/Dateien der Application nicht so aufgeblasen wird.

Die andere Alternative gefällt mir besser. Ich muss gestehen, dass ich sowas heute Nachmittag probiert habe, dabei jedoch als Suchpfad den build-Ordner anstelle des Projektordners der static library angegeben hatte. Tja, kaum macht man's richtig…

Jetzt werde ich mit einem Grinsen im Gesicht einschlafen. Das sieht dann so aus wie der Smiley da oben.

Gruß, Flo
 
Zurück
Oben Unten