DLL vs LIB
Knihovna je sbírka 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) na sebe knihovny a spustitelné soubory odkazují. Soubory knihoven jsou rozděleny na statické a dynamické knihovny v závislosti na době, kdy jsou podprogramy načteny do cílové aplikace. V souladu s tím jsou soubory LIB staticky propojené knihovny a soubory DLL jsou dynamicky propojené knihovny.
Co je DLL?
Dynamic Link Library (běžněji 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. A 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 u souborů Windows EXE (přenosné spustitelné soubory na 32bitových/64bitových Windows a Nový spustitelný soubor na 16bitových Windows). Proto může být v souborech DLL (stejně jako v souborech EXE) obsažena jakákoli kombinace kódu, dat a zdrojů. Datové soubory ve formátu souboru DLL se ve skutečnosti nazývají zdrojové knihovny DLL. Knihovny ikon (s příponou.icl) a soubory písem (s příponami.fon a.fot) jsou příklady knihoven DLL zdrojů.
Součásti zvané sekce tvoří knihovnu DLL a každá sekce má své vlastní atributy, jako je pouze pro čtení/zapisovatelný a spustitelný/nespustitelný. Sekce kódu jsou spustitelné, zatímco datové sekce nespustitelné. Části kódu jsou sdílené a části dat jsou soukromé. To znamená, že všechny procesy používající knihovnu DLL budou používat stejnou kopii kódu, přičemž 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 související se soubory a pamětí) ve Windows. COM (Component Object Model) je rozšíření knihovny DLL na OOP (Object Oriented Programming). Konvenční knihovny DLL se používají snadněji než soubory COM.
Co je LIB?
Soubory LIB jsou statické knihovny (také známé jako staticky propojené knihovny). Soubory LIB obsahují kolekci podprogramů, externích funkcí a proměnných. Soubory LIB se řeší při kompilaci (na rozdíl od běhu). Kód je ve skutečnosti 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?
LIB knihovny lze volat během kompilace, ale DLL knihovny 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ž se změní kód knihovny DLL a aplikace používá nesprávnou verzi knihovny DLL. Toto není problém spojený se soubory LIB. Pokud jde o znovupoužitelnost, při psaní nových verzí systémů nebo zcela nových aplikací jsou knihovny DLL vždy lepší než knihovny LIB.