Auslagern oft benutzter Units in eigenes Verzeichnis
-
HI @ all
Ich möchte einige oft benutzte Klassen in ein extra Verzeichnis auslagern (hier am Beispiel CObserver). Ursprünglich sollten alle diese Klassen dann noch in einen eigenen Namensraum eingebunden werden, aber da es ja net mal ohne funktioniert bin ich ratlos.
Ich habe in Visual Studio den Pfad in die Listen für externe Include und Source Datein eingetragen. Wenn ich jetzt ein Projekt erstelle und die Observer.h einbinde, findet er diese auch. Allerdings findet er nicht die .cpp Datei die sich im selben Ordner befindet (wie die .h Datei).
Woran kann das liegen ? Muss ich das alles in der .h Datei implementieren ?
-
Du musst die cpp ins Projekt mit einbinden. Wie soll das sonst gehen? In der Header-Datei steht nirgens ein Verweis auf die cpp und es ist bei weitem nicht immer so, dass die cpp neben der h liegt.
-
Hm Ok,
dann muss ichs doch alles in die Headerdatei schreiben, da ich nicht in jedem meiner Projekte, in denen ich diese Klassen benutze, die cpp Dateien extra einbinden will. Macht man ja mit der std auch net.
Naja danke für den Hinweis...
-
Bei der C-Standard-Library z.B. wird aber eine Lib mit dazu gelinkt. Da ist auch nicht alles in Headern implementiert. Bei std ist vieles als Source in Headern, weil da viel mit Templates gemacht wird. Informiere dich doch lieber mal darüber, wie man eine Lib erstellen kann.
-
Habe gerade versucht mal ne lib einzubinden - also entweder stell ich mich einfach nur zu blöd an, oder mein VC mag mich nicht. Bin extra nach dem Tutorial von MS gegangen, nur wenn ich Auf "references" gehen und dann auch "Add New referece" klicke, dann zeigt er mir nur ne leere tabelle an...aber im tutorial steht nix weiter...die Lib an sich wurde ja korrekt erstellt...

-
Wenn du nur eine CPP und eine Header hast dann musst du die CPP in jedes Deiner Projekte einbinden.
Der Code gehört ja auch compiliert.
In die Header schreiben ist keine Lösung.Willst du aber vorkompilieren und das Linken dann brauchst du eine LIB.
Eine LIB wird gelinkt.
Da reicht es z.B. in der Header#pragma comment(lib, "deinelibdatei.lib")
zu schreiben.
Dann wird die LIB auch gelinkt nur indem man eine Header includet.
Oder eben die LIB bei deinem Projectsettings angeben.
-
Greenhorn2006 schrieb:
Habe gerade versucht mal ne lib einzubinden - also entweder stell ich mich einfach nur zu blöd an, oder mein VC mag mich nicht. Bin extra nach dem Tutorial von MS gegangen, nur wenn ich Auf "references" gehen und dann auch "Add New referece" klicke, dann zeigt er mir nur ne leere tabelle an...aber im tutorial steht nix weiter...die Lib an sich wurde ja korrekt erstellt...

Welches Tutorial hast du verwendet?
-
Dieses:
http://msdn2.microsoft.com/en-us/library/ms235627.aspx
bin aber mittlerweile auch auf die Möglichkeit es direkt im Code einzubinden gekommen. Aber das in die ProjetSettings zu schreiben, so wie es in obigem Tutorial steht geht bei mir net.