Seite 1 von 1

Mehrere libs in einer Dll zusammenfassen

Verfasst: 07.10.2010, 20:12
von Stephan
Hi

Ich habe mehrere VS-Projekte die libs erstellen und eines, welches eine dll erstellt.
Meine Frage ist nun ob es eine Möglichkeit gibt die libs in das dll-Projekt zu importieren. Also so, das der Code der libs in der dll landet und auch die exportierten Funktionen übernommen werden? Im Endeffekt will ich also in einem Projekt, das alle libs und die dll braucht die libs nichtmehr einbinden müssen, da der Code ja in der dll vorhanden ist.

Hat jemand eine Idee ob sowas funktioniert?

Re: Mehrere libs in einer Dll zusammenfassen

Verfasst: 08.10.2010, 09:32
von Matthias Gubisch
Ganz auf die schnelle:

functionen mit __declspec(dllexport) deklarieren
und die gesamten libs zur DLL linken

Damit sollte deine Anwendung spaeter nur noch die DLL einbinden muessen...

Sofern ich dich da jezt nicht falsch verstanden habe ;)

Re: Mehrere libs in einer Dll zusammenfassen

Verfasst: 09.10.2010, 01:11
von Stephan
Hi
Ja. Genau so hab ich mir das auch gedacht. Wenn ich die dll allerdings mit dem DependencyWalker ansehe fehlen alle Funktionen aus der lib. Die dll ist praktisch identisch mit einer dll die ich ohne die lib Linke.

Re: Mehrere libs in einer Dll zusammenfassen

Verfasst: 09.10.2010, 01:23
von Krishty
Dynamisch gelinkte Funktionen haben fast nur Nachteile gegenüber statisch gelinkten. Wozu die ganze Chose – nur aus Faulheit? In diesem Fall hat Visual C++ eine Funktion Link Library Dependencies, womit Libs automatisch gelinkt werden, falls deren Projekte in der Lösung als Abhängigkeit des aktuellen Projekts markiert sind.

Gruß, Ky

Re: Mehrere libs in einer Dll zusammenfassen

Verfasst: 09.10.2010, 01:57
von Stephan
Hi
Nein. Nicht aus Faulheit. Es geht darum, dass ich die gesamte Engine in einer Dll haben will, welche auch durch Updates ersetzt werden kann. Zusätzlich habe ich noch PlugIns, die dann die Version dieser Dll abfragen können um ihre Kompatibilität zu testen. (Manche PlugIns benötigen nur die Engine, können also unabhängig vom Hauptprogramm verwendet werden).
Soweit ich weis ist der einzige Nachteil einer Dynamischen Linkung der, das ein Funktionsaufruf in die Dll 1-2 Taktzyklen mehr braucht. Ansonsten sehe ich keine Nachteile (Sofern man das Programm nicht mutwillig killen will).
Die Funktion "Link Library Dependencies" kenn ich und verwend ich auch (Diesmal allerdings wirklich aus Faulheit ^^)
Grüße

Re: Mehrere libs in einer Dll zusammenfassen

Verfasst: 09.10.2010, 02:06
von Krishty
Ah, okay – das klang nur erst so, als ob da jedes Fitzelchen dynamisch exportiert werden sollte.

Potentiell dumme Frage, aber: wird auch jede Deklaration, die aus der Lib übernommen werden soll – jetzt mit __declspec(dllexport) davor – tatsächlich in irgendeinem Modul der DLL geparst (also, von einer cpp #includet)? Wenn die Symbole nur in den Linker geschmissen werden ohne innerhalb der DLL deklariert zu werden, wird der Compiler sie ignorieren.

Re: Mehrere libs in einer Dll zusammenfassen

Verfasst: 10.10.2010, 01:47
von Stephan
Argh...
Nein. Wird nicht geparst... Ist zwar in Headern eingebunden, diese sind aber nur für externe Verwendung bestimmt... Hab's jetzt noch in einer cpp-Datei Includiert. Nachdem ich noch ein paar Link-Errors gelöst habe sollte es jetzt funktionieren.
thx