header einbinden
-
hi leute
ich weis nicht genau ob das hier das richtige unterforum ist
ich benutze visual c++ 2008 und habe eine header datei mit funktionen und eine dazugehörige cpp datei wo das ganze definiert istwie kann ich es nun machen dass ich bei meinen projekten nun sowas schreibe
#include <ding.h>und dann die funktionen nutzen kann
ich hab bis jetzt die header datei in das header verzeichnis von vc ("include\") reingepackt
und die cpp datei nach "crt\src\"
wenn ich jetzt aber compile (da is noch nix falsch) und linke dann meckert der rum von wegen "verweis auf nicht aufgelöstes symbol"
ich kann nun aber die cpp datei dem projekt hinzufügen dann klappt allesaber wie kriege ich das hin dass ich nur wie bei den standart ehadern die header datei include und dann alles passt
mfg
PS: in den optionen hab ich die entsprechenden verzeichnisse natürlich dazugeschrieben
-
Skym0sh0 schrieb:
aber wie kriege ich das hin dass ich nur wie bei den stan**** ehadern die header datei include und dann alles passt
Gar nicht, es sei denn du packst alles (auch die Implementation) in den Header. Die Funktionen aus den Standard-Headern kannst du ja auch nicht einfach nur durch den Prototypen aufrufen, die Implementation wird standardmäßig gelinkt. Du musst schon deine cpp-Dateien zum Projekt hinzufügen. Eine weitere Möglichkeit wäre eine lib, die man aber natürlich auch linken muss.
Übrigens solltest du deine eigenen Header nicht ins VS-include-Verzeichnis packen! Mach dir z.B. ein eigenes Verzeichnis mit Standard-Headern, die du öfter brauchst, und trage den Pfad im VS ein.
-
so hab ichs auch ungefähr gemacht...
also muss ich immer wieder die implementations dateien dazu tun in den projekten?
-
Wie _matze schon sagte, kannst du Funktionen die du ständig brauchst in eine lib packen und die dann in dein Projekt linken.
-
wie packe ich die in eine lib?
(lib ist doch quasi das statische gegenstück zur dll oder?
-
Du kannst beim Erstellen eines MSVC++-Projekts auswählen, was du willst. Schau doch mal, was MSDN dazu sagt, da wird die Vorgehensweise recht gut erklärt.
-
mh
ich hab das mal versucht
aber wenn ich das richtig verstanden hab ist es nicht so ganz das was ich sucheich hab vor meine funktionen klassen und so die ich oft brauche einfach in einen ordner packe den von mir aus in den verzeichnissen von VC++ zum durchsuchen angebe und dann einfach #include <lol.h> schreibe und das dann alles klappt
und ich möchte es nicht unbedingt alles in eine header datei schreiben...
(thema code schreiben, veröffendlichen zum gebrauch aber den quellcode doch nicht freigeben)
edit: ok, hab mal goggle bemüht
habs jetzt gelöst indem ich den header in ein bestimmtes verzeichnis kopiert hab, das gleiche mit der lib datei und dann in den quellcode noch
#pragma comment (lib, "dingens-lib.lib")geschrieben hab...
aber gehts auch ohne das pragma?
-
Skym0sh0 schrieb:
aber gehts auch ohne das pragma?
Ja, das kannst du eben in den Projekt-Eigenschaften einstellen (Linker). Aber wenn du einen Header einbindest und dann willst, dass die zugehörige Bibliothek automatisch gelinkt wird, rät sich ein
#pragma commentschon...Du solltest übrigens dran denken, für Debug- und Releasemodus jeweils separate Libs zu erstellen, da die CRT unterschiedlich gelinkt wird. Wenn du dann noch statisch und dynamisch linkst, kommen nochmals zwei Kombinationen dazu...

-
also:
hab jetzt auch mal selbst gedacht (ich hab mich selsbt gewundert dass ichs kann...;))
ich hab einfach das pragma comment in die eine lib datei geschrieben haha^^
jo hab release und debug, und das wird per #ifdef _DEBUG unterschieden bei dem pragma...