DLL proti LIB
Knjižnica je zbirka virov, ki se lahko uporabljajo za razvoj aplikacij. Knjižnico običajno sestavljajo podprogrami, funkcije, razredi, vrednosti in tipi. Med postopkom povezovanja (ki ga običajno izvede povezovalnik) se knjižnice in izvedljive datoteke sklicujejo druga na drugo. Datoteke knjižnic so razdeljene na statične in dinamične knjižnice, odvisno od časa, ko so podprogrami naloženi v ciljno aplikacijo. V skladu s tem so datoteke LIB statično povezane knjižnice, datoteke DLL pa dinamično povezane knjižnice.
Kaj je DLL?
Dynamic Link Library (bolj znana kot DLL) je implementacija knjižnice v skupni rabi, ki jo je razvil Microsoft. Uporablja končnice.dll,.ocx ali.drv in se uporabljajo v operacijskih sistemih Microsoft Windows in OS/2..dll uporabljajo običajne datoteke DLL. Pripono.ocx uporabljajo knjižnice, ki vsebujejo kontrolnike ActiveX, pripono.drv pa uporabljajo datoteke podedovanih sistemskih gonilnikov. Format datoteke DLL je enak datotekam Windows EXE (prenosne izvedljive datoteke v 32-bitnem/64-bitnem sistemu Windows in nove izvedljive datoteke v 16-bitnem sistemu Windows). Zato je lahko katera koli kombinacija kode, podatkov in virov v datotekah DLL (tako kot v datotekah EXE). Pravzaprav se podatkovne datoteke z obliko datoteke DLL imenujejo DLL virov. Knjižnice ikon (s pripono.icl) in datoteke pisav (s pripono.fon in.fot) so primeri DLL-jev virov.
Komponente, imenovane razdelki, sestavljajo DLL in vsak razdelek ima lastne atribute, kot so samo za branje/zapisovanje in izvedljivo/neizvršljivo. Odseki kode so izvedljivi, medtem ko odseki s podatki niso izvedljivi. Odseki s kodo so v skupni rabi, odseki s podatki pa so zasebni. To pomeni, da bodo vsi procesi, ki uporabljajo DLL, uporabljali isto kopijo kode, medtem ko bo imel vsak proces svojo kopijo podatkov. Primarna dinamična knjižnica za Windows je kernel32.dll, ki vsebuje osnovne funkcije (funkcijo, povezano z datotekami in pomnilnikom) v sistemu Windows. COM (Component Object Model) je razširitev DLL v OOP (Object Oriented Programming). Običajne datoteke DLL je lažje uporabljati kot datoteke COM.
Kaj je LIB?
Datoteke LIB so statične knjižnice (znane tudi kot statično povezane knjižnice). Datoteke LIB vsebujejo zbirko podprogramov, zunanjih funkcij in spremenljivk. Datoteke LIB se razrešijo v času prevajanja (v nasprotju z izvajanjem). Koda se dejansko kopira v ciljno aplikacijo. Prevajalnik, povezovalnik ali povezovalec bo naredil to razrešitev in ustvaril objektno datoteko in izvršljivo datoteko. Ta postopek se imenuje postopek statične gradnje.
Kakšna je razlika med DLL in LIB?
Knjižnice LIB lahko kličete med časom prevajanja, knjižnice DLL pa lahko kličete samo med časom izvajanja. Datoteke LIB so bistveno večje od datotek DLL. Zelo pogosta težava z datotekami DLL je težava z različicami. To se zgodi, ko se koda DLL spremeni in aplikacija uporablja napačno različico DLL. To ni težava, povezana z datotekami LIB. Z vidika ponovne uporabe so pri pisanju novih različic sistemov ali popolnoma novih aplikacij DLL vedno boljši od LIB.