Istnieją 3 rodzaje bibliotek w systemie Windows:
- obiekt biblioteki (* lib)
- import biblioteki (* lib)
- dynamiczne biblioteki (* .dll)
biblioteki obiektów są statycznie połączone. Zawierają one pełne definicje obiektów kodu pobieranego przez bibliotekę.
Biblioteki importu to specjalna forma biblioteki obiektów. Zamiast zawierać kod zawierają informacje dla linkera, który ostatecznie mapuje plik wykonywalny do biblioteki dołączanej dynamicznie.
biblioteki dołączane dynamicznie, takie jak biblioteki obiektów, kod źródłowy programu. Jednak ten kod jest ładowany w środowisku wykonawczym i nie jest wkompilowany w plik exe.
Nie zawsze trzeba łączyć bibliotekę importu. Zamiast tego możesz wywołać funkcję LoadLibrary() i wyszukać punkty wejścia API według nazwy lub liczby porządkowej. (Zawsze musisz podać kod, który DLL i gdzie w tym DLL API, które chcesz wprowadzić.)
Inne komentarze tutaj są poprawne, ponieważ nie można zrobić DLL do statycznej biblioteki bez rekompilacji kodu dla biblioteki - to inny rodzaj produkcji.
Nie ma żadnych opcji pozwalających na statyczne połączenie kodu z określonego pliku .dll? –
Myślę, że musisz skompilować bibliotekę do statycznego linkowania, nie jestem pewien, czy możesz zmienić bibliotekę dll w statycznie połączoną bibliotekę po jej skompilowaniu. –
@Andrew So pliki dll zawsze pochodzą z .lib? Skąd mam wiedzieć, kiedy plik .lib nie jest wystarczający i muszę dostarczyć bibliotekę DLL? – undu