DLL verzus LIB
Knižnica je zbierka zdrojov, ktoré možno použiť na vývoj aplikácií. Knižnica sa zvyčajne skladá z podprogramov, funkcií, tried, hodnôt a typov. Počas procesu prepájania (zvyčajne pomocou linkera) si knižnice a spustiteľné súbory navzájom odkazujú. Súbory knižníc sú rozdelené do statických a dynamických knižníc v závislosti od času, v ktorom sú podprogramy načítané do cieľovej aplikácie. Súbory LIB sú teda staticky spojené knižnice a súbory DLL sú dynamicky spojené knižnice.
Čo je to DLL?
Knižnica Dynamic Link Library (častejšie známa ako DLL) je implementácia zdieľanej knižnice vyvinutá spoločnosťou Microsoft. Používa prípony .dll, .ocx alebo .drv a používajú sa v operačných systémoch Microsoft Windows a OS / 2 ... dll používajú bežné súbory DLL. Príponu .ocx používajú knižnice, ktoré obsahujú ovládacie prvky ActiveX, a príponu .drv používajú staršie súbory systémových ovládačov. Formát súboru DLL je rovnaký ako súbor Windows EXE (prenosné spustiteľné súbory v 32-bitovom / 64-bitovom systéme Windows a nový spustiteľný súbor v 16-bitovom systéme Windows). Preto akákoľvek kombinácia kódu, údajov a zdrojov môže byť obsiahnutá v súboroch DLL (rovnako ako v súboroch EXE). Dátové súbory vo formáte súboru DLL sa v skutočnosti nazývajú zdrojové dll. Knižnice ikon (s príponou .icl) a súbory fontov (s príponami .fon a .fot) sú príklady knižníc DLL zdrojov.
Komponenty nazývané sekcie tvoria knižnicu DLL a každá sekcia má svoje vlastné atribúty, ako je iba na čítanie / zapisovanie a spustiteľné / nevykonateľné. Časti kódu sú spustiteľné, zatiaľ čo oddiely údajov nie sú spustiteľné. Úseky kódu sú zdieľané a oddiely údajov sú súkromné. To znamená, že všetky procesy používajúce knižnicu DLL budú používať rovnakú kópiu kódu, zatiaľ čo každý proces bude mať svoju vlastnú kópiu údajov. Primárna dynamická knižnica pre Windows je kernel32.dll, ktorá obsahuje základné funkcie (funkcie týkajúce sa súborov a pamäte) vo Windows. COM (Component Object Model) je rozšírenie DLL na OOP (Object Oriented Programming). Bežné knižnice DLL sa používajú ľahšie ako súbory COM.
Čo je LIB?
Súbory LIB sú statické knižnice (známe tiež ako staticky prepojené knižnice). Súbory LIB obsahujú kolekciu podprogramov, externých funkcií a premenných. Súbory LIB sa rozlišujú v čase kompilácie (na rozdiel od run-time). Kód sa skutočne skopíruje do cieľovej aplikácie. Kompilátor, linker alebo spojivo urobí toto rozlíšenie a vytvorí objektový súbor a spustiteľný súbor. Tento proces sa nazýva proces statického zostavenia.
Aký je rozdiel medzi DLL a LIB?
Knižnice LIB sa dajú volať počas kompilácie, ale knižnice DLL sa dajú volať iba za behu. Súbory LIB sú výrazne väčšie ako súbory DLL. Veľmi častým problémom so súbormi DLL je problém s verziou. Toto sa stane, keď sa zmení kód DLL a aplikácia použije nesprávnu verziu DLL. Toto nie je problém spojený so súbormi LIB. Pokiaľ ide o opakované použitie, pri písaní nových verzií systémov alebo úplne nových aplikácií sú knižnice DLL vždy lepšie ako knižnice LIB.