Das Programm statisch gelinkt, um eine Bibliothek muss jedoch noch die dll ausgeführt werden
Es gibt Dinge, die verstehe ich nicht, wenn es um Vernetzung geht... ich Schreibe ein Programm, das eine 3rd-party-Bibliothek (die GEOS-Bibliothek). Dieses Programm hat eine Abhängigkeit zu geos.lib braucht aber auch noch geos.dll zu laufen.
Lese ich diese Frage, ich glaube, ich verstehe den Unterschied zwischen statischen und dynamischen Bibliotheken. Was ich nicht verstehe, ist, warum brauche ich noch eine dll, wenn ich statisch link eine Bibliothek.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist nicht statisch gelinkt. Die .lib ist nur ein stub-Bibliothek, die bindet .dll unter windows. Das heißt, Sie verknüpfen mit der .lib zur compile-Zeit und zur Laufzeit wird die Suche nach dem .dll.
Es gibt 3 Arten von Bibliotheken auf Windows:
Objekt-Bibliotheken statisch gelinkt. Sie enthalten die vollständige Objekt-Definitionen der code abstrahiert von der Bibliothek.
import-Bibliotheken ist eine spezielle form einer Objekt-Bibliothek. Anstatt mit code, den Sie enthalten Informationen für den linker, ordnet schließlich die ausführbare Datei der dynamic link-Bibliothek.
dynamische link-Bibliotheken, wie z.B. Objekt-Bibliotheken, supply-code für Ihr Programm. Aber dieser code wird zur Laufzeit geladen wird und nicht kompiliert wird in der exe-Datei.
Werden Sie nicht immer brauchen, um link eine import-Bibliothek. Stattdessen können Sie LoadLibrary() und lookup der API-Eintrag Punkte durch Namen oder Ordinalzahl. (Man muss immer sagen, der code, die DLL und wo in dieser DLL API, die Sie eingeben möchten.)
Die anderen Kommentare sind hier richtig, dass Sie nicht eine DLL in eine statische lib, die ohne neu kompilieren Sie den code für die Bibliothek-es ist eine andere Art von Ausgabe.
Wenn .lib war von Visual Studio erstellt dann überprüfen Sie den Wert der Projekt-Eigenschaften -> Linker -> Eingang -> Module-definitions-Datei. Wenn Sie nicht leer ist dann link.exe erstellen der stub-Bibliothek statt der statischen Bibliothek, auch wenn Projekt-Eigenschaften -> allgemein -> Konfiguration-Typ "Static library (.lib)".
Sind Sie auf jeden Fall die Verknüpfung zu einer dynamischen Bibliothek.
Nur weil der linker benötigt .lib-Datei bedeutet nicht, du bist eine Verknüpfung zu einer statischen Bibliothek.
Kann statisch verknüpft werden, die lib-Datei, wenn und nur wenn es eine statische lib-Datei. So müssen Sie zuerst konvertieren Sie Ihre dll-Projekt, um die statische lib, es zu bauen und nach, dass das Produkt verwenden, das von Ihr zu bauen, das eine statische .lib-Datei.