DLL kontra LIB
Biblioteka to zbiór zasobów, których można używać do tworzenia aplikacji. Biblioteka zwykle składa się z podprogramów, funkcji, klas, wartości i typów. Podczas procesu linkowania (zazwyczaj wykonywanego przez linker) biblioteki i pliki wykonywalne odwołują się do siebie. Pliki bibliotek dzielą się na biblioteki statyczne i dynamiczne w zależności od czasu wczytywania podprogramów do aplikacji docelowej. W związku z tym pliki LIB są bibliotekami połączonymi statycznie, a pliki DLL są bibliotekami dołączanymi dynamicznie.
Co to jest DLL?
Dynamic Link Library (bardziej znana jako DLL) to implementacja biblioteki współdzielonej opracowana przez firmę 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 kontrolki ActiveX, a rozszerzenie.drv jest używane przez starsze pliki sterowników systemowych. Format pliku DLL jest taki sam jak pliki Windows EXE (przenośne pliki wykonywalne w 32-bitowym/64-bitowym systemie Windows i nowy plik wykonywalny w 16-bitowym systemie Windows). Dlatego w plikach DLL (tak jak w plikach EXE) może być zawarta dowolna kombinacja kodu, danych i zasobów. W rzeczywistości pliki danych w formacie DLL są nazywane bibliotekami zasobów DLL. Biblioteki ikon (z rozszerzeniem.icl) i pliki czcionek (z rozszerzeniami.fon i.fot) są przykładami bibliotek DLL zasobów.
Komponenty zwane sekcjami tworzą bibliotekę DLL, a każda sekcja ma swoje własne atrybuty, takie jak tylko do odczytu/zapisu i wykonywalny/niewykonywalny. Sekcje kodu są wykonywalne, podczas gdy sekcje danych nie są wykonywalne. Sekcje kodu są współużytkowane, a sekcje danych są prywatne. Oznacza to, że wszystkie procesy korzystające z biblioteki DLL będą używać tej samej kopii kodu, podczas gdy każdy proces będzie miał własną kopię danych. Podstawowa biblioteka dynamiczna dla systemu Windows to kernel32.dll, która zawiera podstawowe funkcje (funkcje związane z plikami i pamięcią) w systemie Windows. COM (Component Object Model) jest rozszerzeniem DLL do OOP (Programowanie zorientowane obiektowo). Konwencjonalne biblioteki DLL są łatwiejsze w użyciu niż pliki COM.
Co to jest LIB?
pliki LIB są bibliotekami statycznymi (znanymi również jako biblioteki połączone statycznie). Pliki LIB zawierają zbiór podprogramów, funkcji zewnętrznych i zmiennych. Pliki LIB są rozwiązywane w czasie kompilacji (w przeciwieństwie do czasu wykonywania). Kod jest faktycznie kopiowany do aplikacji docelowej. Kompilator, linker lub binder zrobi to rozwiązanie i utworzy plik obiektowy i plik wykonywalny. Ten proces nazywa się statycznym procesem budowania.
Jaka jest różnica między biblioteką DLL a LIB?
Biblioteki LIB mogą być wywoływane w czasie kompilacji, ale biblioteki DLL mogą być wywoływane tylko w czasie wykonywania. Pliki LIB są znacznie większe niż pliki DLL. Bardzo częstym problemem z plikami DLL jest problem wersjonowania. Dzieje się tak, gdy kod biblioteki DLL zostanie 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 wykorzystania, podczas pisania nowych wersji systemów lub zupełnie nowych aplikacji, biblioteki DLL są zawsze lepsze niż LIB.