DLL vs LIB
Teek on ressursside kogum, mida saab kasutada rakenduste arendamiseks. Teek koosneb tavaliselt alamprogrammidest, funktsioonidest, klassidest, väärtustest ja tüüpidest. Linkimisprotsessi ajal (tavaliselt seda teeb linker) viitavad teegid ja käivitatavad failid üksteisele. Teegifailid jagatakse staatilisteks ja dünaamilisteks teekideks sõltuv alt ajast, mil alamprogrammid sihtrakendusse laaditakse. Sellest lähtuv alt on LIB-failid staatiliselt lingitud teegid ja DLL-failid dünaamiliselt lingitud teegid.
Mis on DLL?
Dünaamilise lingi teek (rohkem tuntud kui DLL) on Microsofti välja töötatud jagatud teegi rakendus. See kasutab laiendusi.dll,.ocx või.drv ning neid kasutatakse operatsioonisüsteemides Microsoft Windows ja OS/2..dll-i kasutavad tavalised DLL-failid. Ja.ocx-laiendit kasutavad teegid, mis sisaldavad ActiveX-juhtelemente, ja.drv-laiendit kasutavad pärandsüsteemi draiverifailid. DLL-failivorming on sama, mis Windowsi EXE-failidel (32-bitises/64-bitises Windowsis kaasaskantavad käivitatavad failid ja 16-bitises Windowsis New Executable). Seetõttu võib DLL-failides sisalduda mis tahes koodi, andmete ja ressursside kombinatsioon (nagu EXE-failides). Tegelikult nimetatakse DLL-vormingus andmefaile ressursi-DLL-ideks. Ressursi DLL-ide näited on ikooniteegid (laiendiga.icl) ja fondifailid (laienditega.fon ja.fot).
Sektsioonideks nimetatud komponendid moodustavad DLL-i ja igal jaotisel on oma atribuudid, nagu kirjutuskaitstud/kirjutatav ja käivitatav/mittekäivitatav. Koodilõigud on käivitatavad, samas kui andmeosad pole käivitatavad. Koodijaotised on jagatud ja andmejaotised on privaatsed. See tähendab, et kõik DLL-i kasutavad protsessid kasutavad sama koodi koopiat, samas kui igal protsessil on oma andmete koopia. Windowsi peamine dünaamiline teek on kernel32.dll, mis sisaldab Windowsi põhifunktsioone (failide ja mäluga seotud funktsioone). COM (Component Object Model) on DLL-i laiendus OOP-le (Object Oriented Programming). Tavalisi DLL-e on lihtsam kasutada kui COM-faile.
Mis on LIB?
LIB-failid on staatilised teegid (tuntud ka kui staatiliselt lingitud teegid). LIB-failid sisaldavad alamprogrammide, väliste funktsioonide ja muutujate kogumit. LIB-failid lahendatakse kompileerimise ajal (erinev alt käitusajast). Kood kopeeritakse tegelikult sihtrakendusse. Selle eraldusvõime teeb kompilaator, linker või siduja ning loob objektifaili ja käivitatava faili. Seda protsessi nimetatakse staatiliseks ehitusprotsessiks.
Mis vahe on DLL-il ja LIB-il?
LIB-teeke saab kutsuda kompileerimise ajal, kuid DLL-teeke saab kutsuda ainult käitusajal. LIB-failid on oluliselt suuremad kui DLL-failid. Väga levinud probleem DLL-failidega on versiooniprobleem. See juhtub siis, kui DLL-i koodi muudetakse ja rakendus kasutab DLL-i vale versiooni. See ei ole LIB-failidega seotud probleem. Taaskasutatavuse osas on süsteemide uute versioonide või täiesti uute rakenduste kirjutamisel DLL-id alati paremad kui LIB-id.