DLL pret LIB
Bibliotēka ir resursu kolekcija, ko var izmantot lietojumprogrammu izstrādei. Bibliotēku parasti veido apakšprogrammas, funkcijas, klases, vērtības un veidi. Saistīšanas procesa laikā (parasti to veic saistītājs) bibliotēkas un izpildāmie faili atsaucas viena uz otru. Bibliotēkas faili tiek sadalīti statiskajās un dinamiskajās bibliotēkās atkarībā no laika, kurā apakšprogrammas tiek ielādētas mērķa lietojumprogrammā. Attiecīgi LIB faili ir statiski saistītas bibliotēkas un DLL faili ir dinamiski saistītas bibliotēkas.
Kas ir DLL?
Dynamic Link Library (plašāk pazīstama kā DLL) ir Microsoft izstrādāta koplietojamā bibliotēka. Tas izmanto.dll,.ocx vai.drv paplašinājumus, un tos izmanto Microsoft Windows un OS/2 operētājsistēmās..dll izmanto parastie DLL faili. Un.ocx paplašinājumu izmanto bibliotēkas, kurās ir ActiveX vadīklas, un.drv paplašinājumu izmanto mantotie sistēmas draiveru faili. DLL faila formāts ir tāds pats kā Windows EXE failiem (pārnēsājamie izpildāmie faili 32 bitu/64 bitu sistēmā Windows un jauni izpildāmie faili 16 bitu sistēmā Windows). Tāpēc DLL failos var būt jebkura koda, datu un resursu kombinācija (tāpat kā EXE failos). Faktiski datu failus ar DLL faila formātu sauc par resursu DLL. Ikonu bibliotēkas (ar paplašinājumu.icl) un fontu faili (ar paplašinājumiem.fon un.fot) ir resursu DLL piemēri.
Komponenti, ko sauc par sadaļām, veido DLL, un katrai sadaļai ir savi atribūti, piemēram, tikai lasāma/rakstāma un izpildāma/neizpildāma. Koda sadaļas ir izpildāmas, savukārt datu sadaļas nav izpildāmas. Koda sadaļas tiek koplietotas, un datu sadaļas ir privātas. Tas nozīmē, ka visi procesi, kas izmanto DLL, izmantos vienu un to pašu koda kopiju, savukārt katram procesam būs sava datu kopija. Primārā dinamiskā bibliotēka operētājsistēmai Windows ir kernel32.dll, kurā ir Windows pamatfunkcijas (ar failiem un atmiņu saistīta funkcionalitāte). COM (Component Object Model) ir DLL paplašinājums uz OOP (Object Oriented Programming). Parastos DLL ir vieglāk izmantot nekā COM failus.
Kas ir LIB?
LIB faili ir statiskas bibliotēkas (pazīstamas arī kā statiski saistītās bibliotēkas). LIB faili satur apakšprogrammu, ārējo funkciju un mainīgo kolekciju. LIB faili tiek atrisināti kompilēšanas laikā (nevis izpildes laikā). Kods faktiski tiek kopēts mērķa lietojumprogrammā. Kompilators, saistītājs vai saistītājs veiks šo izšķirtspēju un izveidos objekta failu un izpildāmo failu. Šo procesu sauc par statisko veidošanas procesu.
Kāda ir atšķirība starp DLL un LIB?
LIB bibliotēkas var izsaukt kompilēšanas laikā, bet DLL bibliotēkas var izsaukt tikai izpildes laikā. LIB faili ir ievērojami lielāki nekā DLL faili. Ļoti izplatīta problēma ar DLL failiem ir versiju problēma. Tas notiek, ja tiek mainīts DLL kods un lietojumprogramma izmanto nepareizu DLL versiju. Tā nav problēma, kas saistīta ar LIB failiem. Runājot par atkārtotu izmantošanu, rakstot jaunas sistēmu versijas vai pilnīgi jaunas lietojumprogrammas, DLL vienmēr ir labākas par LIB.