Rozdíl mezi DLL a LIB

DLL vs LIB

Knihovna je kolekce zdrojů, které lze použít k vývoji aplikací. Knihovna se obvykle skládá z podprogramů, funkcí, tříd, hodnot a typů. Během procesu propojení (obvykle prováděného linkerem) si knihovny a spustitelné soubory vzájemně odkazují. Soubory knihovny jsou rozděleny do statických a dynamických knihoven v závislosti na době, kdy jsou podprogramy načteny do cílové aplikace. Soubory LIB jsou tedy staticky propojenými knihovnami a soubory DLL jsou dynamicky propojenými knihovnami.

Co je DLL?

Dynamic Link Library (běžně známá jako DLL) je implementace sdílené knihovny vyvinutá společností Microsoft. Používá přípony .dll, .ocx nebo .drv a používají se v operačních systémech Microsoft Windows a OS / 2 ... dll používají běžné soubory DLL. Příponu .ocx používají knihovny, které obsahují ovládací prvky ActiveX, a příponu .drv používají starší soubory systémových ovladačů. Formát souboru DLL je stejný jako soubory EXE systému Windows (přenosné spustitelné soubory v 32bitovém / 64bitovém systému Windows a nový spustitelný soubor v 16bitovém systému Windows). Proto jakákoli kombinace kódu, dat a zdrojů může být obsažena v souborech DLL (stejně jako v souborech EXE). Ve skutečnosti jsou datové soubory ve formátu souboru DLL nazývány DLL prostředků. Knihovny ikon (s příponou .icl) a soubory písem (s příponami .fon a .fot) jsou příklady knihoven DLL prostředků.

Komponenty nazvané sekce tvoří knihovnu DLL a každá část má své vlastní atributy, jako je pouze pro čtení / zapisovatelné a spustitelné / ne spustitelné. Sekce kódu jsou spustitelné, zatímco oddíly s údaji nejsou spustitelné. Sekce kódu jsou sdílené a datové sekce jsou soukromé. To znamená, že všechny procesy používající DLL budou používat stejnou kopii kódu, zatímco každý proces bude mít svou vlastní kopii dat. Primární dynamická knihovna pro Windows je kernel32.dll, která obsahuje základní funkce (funkce souborů a paměti) ve Windows. COM (Component Object Model) je rozšíření DLL na OOP (Object Oriented Programming). Použití konvenčních DLL je snadnější než u souborů COM.

Co je LIB?

Soubory LIB jsou statické knihovny (známé také jako staticky propojené knihovny). Soubory LIB obsahují kolekci podprogramů, externích funkcí a proměnných. Soubory LIB jsou rozlišeny v době kompilace (na rozdíl od běhu). Kód je skutečně zkopírován do cílové aplikace. Kompilátor, linker nebo pořadač provede toto rozlišení a vytvoří objektový soubor a spustitelný soubor. Tento proces se nazývá proces statického sestavení.

Jaký je rozdíl mezi DLL a LIB?

Knihovny LIB lze volat během kompilace, ale knihovny DLL lze volat pouze během běhu. Soubory LIB jsou výrazně větší než soubory DLL. Velmi častým problémem se soubory DLL je problém s verzováním. K tomu dochází, když je změněn kód DLL a aplikace používá nesprávnou verzi DLL. Toto není problém spojený se soubory LIB. Pokud jde o opětovné použití, při psaní nových verzí systémů nebo zcela nových aplikací jsou knihovny DLL vždy lepší než knihovny LIB.