VS6 Projekte verknüpfen

Da ich gerade mal wieder bisschen mit C++ anfange stehe ich gerade vor einem kleinen Problem.
Ich hab 2 Projekte, eine Bibliothek und eine Konsolenanwendung. Die Anwendung soll die Bibliothek vom anderen Projekt benutzen. Beide sind in einer Solution und die Bibliothek ist in den Abhängigkeiten der Anwendung.
Die Header findet er auch (nach dem ich ihm gesagt hab wo er sie findet) aber er scheint die dll nicht zu finden, weil der Linker mir immer Fehlermeldungen bei den Methoden meiner Lib ausgibt.

Was muss ich da tun damit das klappt`?

Hi EagleEye,

[edit]siehe Anhang[/edit] <- hab hier mal ein Minimalbeispiel hochgeladen

Das Projekt Lib stellt eine kleine Funktion bereit, die nach Debug/Lib.lib compiliert wird.

Das ganze wird vom Projekt App wieder eingebunden, indem in den Projekteigenschaften von App der Unterordner Lib zum Headersuchpfad hinzugefügt wurde (Konfigurationseigenschaften\C/C++\Zusätzliche Includeverzeichnisse)

Ebenso muss unter Linker\Zusätzliche Bibliotheksverzeichnisse das Debug Verzeichnis der Arbeitsmappe hinzugefügt werden (dorthin wird die Lib.lib kopiert).

Letztendlich habe ich unter Linker\Eingabe\Zusätzliche Abhängigkeiten noch “Lib.lib” eingetragen und schon konnte ich das Projekt App Compilieren und Linken (unter der Voraussetzung, dass Lib.lib schon erzeugt wurde).

Vllt. hilft das ja weiter ^

Das ist sehr komisch, als statische Lib geht deins. Stell ichs auf dynamisch um wie ich es hab und brauch gehts auch nicht mehr.

DLLs benötigen eine andere Handhabung im Quelltext… Vllt. kennt sich ja jemand damit aus, wie man DLLs einbindet und benutzt :smiley:

Zum kompilieren brauchst Du immer die statische *.lib wenn Du die passende *.h includierst. Zum ausführen hingegen die *.dll, wenn Du Dein Programm später mal auslieferst.
Es gibt zwar auch Mechanismen um eine *.dll in eine Anwendung zu intigrieren ohne sie gegen die *.lib zu kompilieren, dann hast Du aber auch keine *.h dazu und musst quasi wissen was die *.dll mitbringt aber ich gehe mal davon aus Du willst eine Header Datei includieren und dessen Implementierung dann linken, dann siehe ersteres von meinem Post :slight_smile:

Gut Schuß
VuuRWerK :wink:

Habe schon lange nicht mehr mit C++/C gearbeitet, aber wenn ich mich recht entsinne benötigt man zum Kompilieren immer nur die Header-Files und keine Lib… Den Rest macht ohnehin der Linker und diesem kann man angeben, ob dynamisch oder statisch gelinkt wird. Sehe ich das falsch?

Ebenius

Ja, zum kompilieren brauchst Du natürlich nur die *.h - files, richtig, aber zum linken brauchst Du die statischen .lib/lib.a - files. Zum ausführen Deiner Anwendung brauchst Du dann die dynamischen *.dll - files.

Das wäre der, gänginge, Vorgang des dynamischen linkens, d.h. man muss die *.dll immer mitliefern mit seinem Programm damit man es benutzen kann.
Beim statischen linken ändert sich am eigentlichen Kompilier- und Linkvorgang nix ausser das man dem Linker(gern auch dem Compiler der den Linker startet) mitteilt das er statisch linken soll (beim gcc: -static) und somit wird alles in seine Anwendung reingestrickt, was u.U. die ausführbare Datei der Anwendung immens aufbläht.

Hoffe helfen zu können :slight_smile:

Gut Schuß
VuuRWerK :wink:

P.S.: Ebenius == SeH? :o)

bei mir hat er beides h und lib aber trotzdem mag er nicht :wink:

AnM oder ChW?

Hast Du dem Compiler gesagt wo er die *.h findet und dem Linker wo die *.lib? Sicher, 'ne triviale Frage aber man weiß ja nie :slight_smile:

Hast Du vielleicht ein paar Fehlermeldungen an denen Du uns teilhaben lassen möchtest?

Gut Schuß
VuuRWerK :wink:

jo hab ich ihm alles gesagt

na klar wenn ihr wollt hier ist sie

Und die lib in der sich die Klasse „SystemInformation“ weiß der Linker ganz sicher?

ChS, kennst mich also net persönlich, aber Gruß von ChW und AnM kann ich Dir ja sagen :wink: Glaub im java-forum wurdest Du schon von nem anderen Kollegen (OlH) belästigt :slight_smile: Jaja, die Vergangenheit holt Dich immerwieder ein, Du kannst nicht flüchten :stuck_out_tongue_winking_eye:

Btw: Danke fürs „Editor-Framework“ … :o)

Gut Schuß
VuuRWerK :wink:

P.S.: SeH: Wir brauchen keinen Bug-Tracker, wir brauchen nen Dreckbagger.