Library statisch linken
-
Hallo
Ich habe in meinem Projekt die gdiplus Bibliothek verwendet, indem ich sie wie folgt ins Projekt eingefügt habe:
#include "Gdiplus.h" using namespace Gdiplus; #pragma comment(lib, "gdiplus.lib")Nun möchte ich das Programm auch auf anderen Rechnern laufen lassen, ohne die gdiplus.dll Datei mitgeben zu müssen. Wie kann ich die gdiplus.lib so ins Projekt hineinlinken, dass sie ein Bestandteil der exe-Datei wird?
Ich versuchte es im VC .NET 2002 wie folgt:
Projekteigenschaften --> Linker --> Eingabe --> Zusätzliche Abhängigkeiten --> "gdiplus.lib"Das klappt aber nicht. Kann mir jemand helfen? Vielen Dank!
-
gar nicht.
-
Nett. Stimmt das? Kann das jemand bestätigen?
-
Bestätigt, da bekanntermassen DLL != LIB
-
Ok, aber kann eine DLL in eine Exe-Datei gelinkt werden? Ich meine, die mfc70.dll habe ich ja statisch dazugelinkt. Was ist damit?
-
ja, weil diese auch als statische library angeboten wird. die gdiplus dll aber nicht.
-
Shit, dann bleibt mir nichts anderes übrig, als jeweils diese DLL mitzuliefern?
-
es gibt auch noch programm die das in eine exe zusammenfassen. dann wird das glaub ich beim starten wieder entpackt. :p
-
Ja das kenne ich auch, z.B Immo-Setup oder ähnliche. Nun gut, bei einer Neuinstallation werden sowieso noch Treiber installiert, und so kann ich gleich dort auch noch die DLL mitinstallieren lassen.
Danke für die Unterhaltung!
-
ne ich meinte kein installer programm.
-
sondern?
-
hab den programmnamen leider vergessen. und über google hab ichs nicht wiedergefunden

-
Na schön, nicht weiter wild. Ich werde die Datei halt über die Installationsroutine entsprechend einbinden. Sollte kein Problem darstellen. Wäre halt einfach angenehm gewesen, wenn es so geklappt hätte.
-
Es gibt ein Programm, welches die Funktionen der DLL extrahieren und daraus eine Lib machen kann. Das funzt aber nur, wenn die DLL keinen Startup-Code besitzt.
-
Hallo RenéG
Und leider weiss ich nicht besonders viel über diese DLL. Darum ist dieser Punkt überflüssig. Aber vielleicht kannst du meinem Fragezeichen
ein bisschen nachhelfen und ihm sagen, was denn Linktechnisch der Unterschied zwischen einer DLL und einer LIB ist. Ich meine, dass die .obj, die vom Compiler erzeugten .obj und die .lib Files mit dem Linker zu einer .exe zusammengebunden werden. Darum kapiere ich nicht, warum ich die gdiplus.lib nicht hineinlinken kann. Oder gibt es verschiedene Arten von .lib's ? Im Gegensatz dazu wird eine DLL erst zur Laufzeit und das nur einmal in den Arbeitsspeicher geladen und vom Programm verwendet.Soweit richtig oder habe ich da schon einen Überlegungsfehler gemacht?
-
in der gdiplus.lib stehen nur verweise auf die dll und dort ist nicht der kompilierte code enthalten.