Du bist nicht angemeldet.

Werbeanzeige

riCo

Treue Seele

  • »riCo« ist der Autor dieses Themas

Beiträge: 165

Beruf: Student

  • Private Nachricht senden

1

13.02.2006, 16:40

Namespace in Lib.

Hallo.
Ich versuche zZ paar Klassen in eine Lib zu exportieren, damit ich das Zeug nicht immer in jedes Projekt einbinden muss. Sind um die 200 Dateien. Das Kompilieren dauert dementsprechend lang.

Nun zu meinen Problem. Ich hab mal ganz normal ein Projekt angelegt(Static Library), alle Dateien importiert und anschliessend kompiliert. Die *.lib hab ich dann in ein Programm importiert via #pragma comment(lib,..). Ich seh schon die ganzen Funktionen(Strg + Space). Alle Klassen sind bis jetzt aber OHNE __declspec(dllexport) definiert. Es ist also alles noch ganz normal. Ich bekomm jedoch beim anlegen von Klassenobjekten Fehlermeldungen. Er meint, der Namespace wurde nicht gefunden. Muss ich den Namespace irgendwie exportieren oder geht das mit Namespace gar nicht? Muss ich auch alle Klassen die ich ausserhalt nutzen will mit __declspec(dllexport) deklarieren? Ich seh sie ja aber schon..

Gruß Rico

Lemming

Alter Hase

Beiträge: 550

Beruf: Schüler

  • Private Nachricht senden

2

13.02.2006, 17:34

ne header datei, wo alles definiert wird (oder deklariert??? ich kann mir das nie merken) musst du auch ein binden. hast du das gemacht?
Es gibt Probleme, die kann man nicht lösen.
Für alles andere gibt es C++...

riCo

Treue Seele

  • »riCo« ist der Autor dieses Themas

Beiträge: 165

Beruf: Student

  • Private Nachricht senden

3

13.02.2006, 19:08

Ahh, genau das hab ich vergessen, danke! Die Klassen und den Namespace kann ich unverändert lassen oder muss ich ihn auch noch anders deklarieren?

koschka

Community-Fossil

Beiträge: 2 863

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

4

13.02.2006, 19:13

Die Programmierten Funktionen musst du exportieren wenn du etwas von aussen verwenden willst. Wenn du das nicht machst, willst du sie ja nur >intern< also in der lib verwenden, was natürlich auch geht.

Die Header wo alles DEKLARIERT ist ;) mit einbinden, lib linken.

Deklariert := Vordeklaration, bzw Deklaration des Funktionskopfes.
Definiert := die Menge der Operationen / Schritte die nötig ist ein Problem x zu lösen

Lemming

Alter Hase

Beiträge: 550

Beruf: Schüler

  • Private Nachricht senden

5

13.02.2006, 19:28

Zitat von »"koschka"«

Deklariert := Vordeklaration
Definiert := die Menge der Operationen / Schritte die nötig ist ein Problem x zu lösen
ich hoffe ich kanns mir diesmal merken ;)
Es gibt Probleme, die kann man nicht lösen.
Für alles andere gibt es C++...

riCo

Treue Seele

  • »riCo« ist der Autor dieses Themas

Beiträge: 165

Beruf: Student

  • Private Nachricht senden

6

14.02.2006, 10:41

Hab das jetzt soweit hinbekommen. Die Frage ist nun, was es mir bringt. Ich muss die Lib und alle Headerdateien einbinden. Das bringt mir also so gut wie gar nichts. Ich dachte wenn ich die Lib einbinde reicht das. So ist es relativ sinnlos.

koschka

Community-Fossil

Beiträge: 2 863

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

7

14.02.2006, 12:33

es hat folgenden Sinn:

Wenn du eine Mathelib machsst, möchstest du in 15 Jahren nicht mehr /kannst nicht mehr wissen wie du das alles definiert hast, ist ja auch unwichtig, hauptsache eine Funktionion wie fak(x) liefert die die Fakultät schnell und effizient.

Wenn du immer deine eigenen Ausgaberoutinen schreiben müsstest würdest du über libs auch anders denken, den sowas ist oft auch in libs versteckt.

riCo

Treue Seele

  • »riCo« ist der Autor dieses Themas

Beiträge: 165

Beruf: Student

  • Private Nachricht senden

8

14.02.2006, 14:28

Ok, danke für die Erklärung. ;)

Werbeanzeige