Różnica między DLL a LIB

DLL vs LIB

Biblioteka to zbiór zasobów, które można wykorzystać do tworzenia aplikacji. Biblioteka zwykle składa się z podprogramów, funkcji, klas, wartości i typów. Podczas procesu łączenia (zwykle wykonywanego przez linker), biblioteki i pliki wykonywalne nawiązują do siebie nawzajem. Pliki bibliotek dzielą się na biblioteki statyczne i dynamiczne w zależności od czasu, w którym podprogramy są ładowane do aplikacji docelowej. W związku z tym pliki LIB to biblioteki połączone statycznie, a pliki DLL to biblioteki dynamicznie połączone.

Co to jest DLL?

Dynamic Link Library (bardziej znana jako DLL) to implementacja biblioteki współdzielonej opracowana przez Microsoft. Wykorzystuje rozszerzenia .dll, .ocx lub .drv i są one używane w systemach operacyjnych Microsoft Windows i OS / 2… dll jest używany przez zwykłe pliki DLL. Rozszerzenie .ocx jest używane przez biblioteki zawierające formanty ActiveX, a rozszerzenie .drv jest używane przez starsze pliki sterowników systemu. Format pliku DLL jest taki sam, jak plików Windows EXE (przenośne pliki wykonywalne w 32-bitowym / 64-bitowym systemie Windows i nowy plik wykonywalny w 16-bitowym systemie Windows). Dlatego dowolna kombinacja kodu, danych i zasobów może być zawarta w plikach DLL (podobnie jak w plikach EXE). W rzeczywistości pliki danych w formacie pliku DLL nazywane są bibliotekami DLL zasobów. Biblioteki ikon (z rozszerzeniem .icl) i pliki czcionek (z rozszerzeniami .fon i .fot) to przykłady bibliotek DLL zasobów.

Składniki zwane sekcjami tworzą bibliotekę DLL, a każda sekcja ma swoje własne atrybuty, takie jak tylko do odczytu / zapisywalne i wykonywalne / niewykonywalne. Sekcje kodu są wykonywalne, podczas gdy sekcje danych nie są wykonywalne. Sekcje kodu są wspólne, a sekcje danych są prywatne. Oznacza to, że wszystkie procesy korzystające z biblioteki DLL będą używać tej samej kopii kodu, a każdy proces będzie miał własną kopię danych. Podstawową biblioteką dynamiczną dla systemu Windows jest kernel32.dll, który zawiera podstawowe funkcje (związane z plikami i pamięcią) w systemie Windows. COM (Component Object Model) to rozszerzenie DLL do OOP (Object Oriented Programming). Konwencjonalne biblioteki DLL są łatwiejsze w użyciu niż pliki COM.

Co to jest LIB?

Pliki LIB to biblioteki statyczne (znane również jako biblioteki połączone statycznie). Pliki LIB zawierają zbiór podprogramów, funkcji zewnętrznych i zmiennych. Pliki LIB są rozstrzygane w czasie kompilacji (w przeciwieństwie do czasu wykonywania). Kod jest faktycznie kopiowany do aplikacji docelowej. Kompilator, linker lub spoiwo wykonają tę rozdzielczość i utworzą plik obiektowy i plik wykonywalny. Ten proces nazywa się procesem kompilacji statycznej.

Jaka jest różnica między DLL a LIB?

Biblioteki LIB można wywoływać w czasie kompilacji, ale biblioteki DLL można wywoływać tylko w czasie wykonywania. Pliki LIB są znacznie większe niż pliki DLL. Bardzo częstym problemem z plikami DLL jest problem z wersjonowaniem. Dzieje się tak, gdy kod biblioteki DLL zostaje zmieniony, a aplikacja używa niewłaściwej wersji biblioteki DLL. Nie jest to problem związany z plikami LIB. Pod względem możliwości ponownego użycia, podczas pisania nowych wersji systemów lub całkowicie nowych aplikacji, biblioteki DLL są zawsze lepsze niż LIB.