Diferența dintre DLL și LIB

Anonim

DLL vs LIB

O bibliotecă este o colecție de resurse care poate fi utilizată pentru a dezvolta aplicații. O bibliotecă este formată, de obicei, din subrutine, funcții, clase, valori și tipuri. În timpul procesului de conectare (de obicei realizat de un linker), bibliotecile și executabilele fac trimitere reciprocă. Fișierele de bibliotecă sunt împărțite în biblioteci statice și dinamice, în funcție de momentul în care subrutinele sunt încărcate în aplicația țintă. În consecință, fișierele LIB sunt biblioteci legate în mod static, iar fișierele DLL sunt biblioteci legate în mod dinamic.

Ce este DLL-ul?

Biblioteca Dynamic Link (mai cunoscută sub denumirea de DLL) este o implementare comună a bibliotecii dezvoltată de Microsoft. Utilizează. dll,. ocx sau. drv și sunt utilizate în sistemele de operare Microsoft Windows și OS / 2 … dll este folosit de fișierele DLL obișnuite. Și. extensia ocx este folosită de bibliotecile care conțin controale ActiveX și. extensia drv este folosită de fișierele driver-ului de sistem vechi. Formatul de fișier DLL este identic cu fișierele Windows EXE (fișiere portabile executabile pe Windows pe 32 de biți / 64 de biți și executabil nou pe Windows pe 16 biți). Prin urmare, orice combinație de cod, date și resurse poate fi conținută în fișierele DLL (la fel ca în fișierele EXE). Ca o bază de fapt, fișierele de date cu formatul de fișier DLL se numesc DLL de resurse. Bibliotecile de icoane (cu extensia. Icl) și fișierele cu fonturi (cu extensiile. Fon și. Fot) sunt exemple de DLL de resurse.

Componentele numite secțiuni constituie un DLL și fiecare secțiune are propriile atribute, cum ar fi citire / scriere și executabil / neexecutabil. Secțiunile de cod sunt executabile, în timp ce secțiunile de date nu pot fi executate. Secțiunile de cod sunt partajate, iar secțiunile de date sunt private. Aceasta înseamnă că toate procesele care utilizează DLL vor folosi aceeași copie a codului, în timp ce fiecare proces va avea o copie proprie a datelor. Biblioteca dinamică primară pentru Windows este kernel32. dll, care conține funcțiile de bază (funcționalități legate de fișiere și memorie) pe Windows. COM (Model Object Component) este extensia DLL pentru OOP (Object Oriented Programming). DLL-urile convenționale sunt mai ușor de utilizat decât fișierele COM.

Ce este LIB?

Fișierele LIB sunt biblioteci statice (cunoscute și ca biblioteci legate în mod static). Fișierele LIB conțin o colecție de subrutine, funcții externe și variabile. Fișierele LIB sunt rezolvate la timpul de compilare (spre deosebire de timpul de execuție). Codul este de fapt copiat în aplicația țintă. Un compilator, un linker sau un liant va face această rezoluție și va produce un fișier obiect și un fișier executabil. Acest proces se numește proces de construire statică.

Care este diferența dintre DLL și LIB?

Bibliotecile LIB pot fi apelate în timpul procesului de compilare, dar bibliotecile DLL pot fi solicitate numai în timpul run-time.Fișierele LIB sunt semnificativ mai mari decât fișierele DLL. O problemă foarte frecventă cu fișierele DLL este problema de versiune. Acest lucru se întâmplă atunci când codul DLL este schimbat și aplicația utilizează o versiune greșită a unui DLL. Aceasta nu este o problemă asociată cu fișierele LIB. În ceea ce privește reutilizarea, atunci când scriem noi versiuni de sisteme sau aplicații complet noi, DLL-urile sunt întotdeauna mai bune decât LIB-urile.