Wat is een dll-bibliotheek. dll Bestandsextensie

Enkele van de meest veelvoorkomende fouten op Windows zijn dit fouten met DLL-bibliotheek mi. Het is belangrijk om te weten hoe ze kunnen worden opgelost zonder het besturingssysteem opnieuw te installeren.


Windows geeft een foutmelding bij een DLL-bestand en u weet niet wat u moet doen? Maak je geen zorgen, je hebt minstens drie opties om elk probleem van deze aard op te lossen. Systeemdocumenten zijn verantwoordelijk voor stabiel werk niet alleen het besturingssysteem zelf, maar ook programma's van derden, dus het zou handig zijn om erachter te komen hoe u alle problemen kunt oplossen

Bestanden met de extensie .DLL zijn systeembestanden, die worden gebruikt door zowel Windows als programma's van derden. Bestanden met deze resolutie veroorzaken vaak problemen, maar het systeem waarschuwt er zelf voor. Als een bestand defect is, ziet u een foutmelding die er ongeveer zo uitziet:

Wanneer u een dergelijk bericht ziet, moet u opletten naar welk bestand het venster verwijst. Het is het beste om niet alleen de naam van dit bestand te onthouden, maar ook op te schrijven. Problemen hiermee zijn goed omdat het systeem u zelf laat weten waar u de oorzaak van het probleem moet zoeken.

Hoe fouten te herstellen

Er zijn drie manieren om dit te repareren:

  • Herstel het systeem;
  • Overschrijf het vereiste bestand;
  • Gebruik universele programma's;

Systeemherstel is een drastische methode die u het beste niet kunt gebruiken als u slechts 1 fout heeft. Deze methode is alleen goed als je enorme problemen hebt en het systeem extreem onstabiel is. Om het systeem te kunnen herstellen, moet u vooraf een herstelpunt maken of hebben reservekopie het hele besturingssysteem. Als u dit materiaal leest op een dag waarop u geen enkel probleem ondervindt, raden wij u aan nu meteen een back-upkopie of herstelpunt te maken. Dit kan gedaan worden met behulp van speciale programma's of gewoon gebruiken standaard functionaliteit uw besturingssysteem.

Het overschrijven van het vereiste bestand is ideaal als u er maar één heeft. In dit geval moet je zoeken noodzakelijke bibliotheek op internet en overschrijf alleen deze. Wanneer u een bibliotheek zoekt, controleer dan tegelijkertijd in welk gedeelte van de computer deze zich bevindt. Houd er ook rekening mee dat de bestanden verschillen, afhankelijk van de bitdiepte van het besturingssysteem. Als je Windows 32 bit hebt, dan heb je een x32-bibliotheek nodig, we doen hetzelfde met Windows 64 bit, we schrijven daar alleen 64-bit-bibliotheken.

De derde manier is om te gebruiken gespecialiseerde programma's, de eenvoudigste. U kunt bijvoorbeeld gebruiken, maar er zijn ook andere hulpprogramma's. Soortgelijke programma's kan uw apparaat analyseren, alles vinden en ze automatisch verwijderen. Wij raden aan om alleen te gebruiken gratis opties programma's, omdat betaalde analogen verschillen zelden op wat voor manier dan ook. Automatische eliminatie Dit is alleen mogelijk als uw problemen niet kritiek zijn en het systeem als geheel correct blijft werken.

Populaire problemen

Er zijn verschillende problematische DLL's die vaker problemen veroorzaken dan andere. Deze bibliotheken omvatten het volgende:

  • d3d11;
  • dxgi;
  • msvcr100;
  • ontboog;
  • xleef;
  • open32;

Al deze problemen houden verband met het DirectX-pakket. Om ze te verwijderen, hoeft u alleen maar het pakket te downloaden en opnieuw te installeren. Als gevolg hiervan elimineert u dergelijke problemen op uw Windows-computer. Hieronder vindt u een andere methode als niets in dit artikel u heeft geholpen:

En IBM OS/2; dynamische bibliotheek die herhaald gebruik door verschillende mogelijk maakt softwaretoepassingen. DLL's bevatten ook ActiveX-besturingselementen en stuurprogramma's. In de UNIX-wereld worden soortgelijke functies uitgevoerd door de zogenaamde. gedeelde objecten.

Het DLL-bestandsformaat volgt dezelfde conventies als het uitvoerbare bestanden, waarbij code, tabellen en bronnen worden gecombineerd.

Doeleinden van de introductie van DLL's

Aanvankelijk werd aangenomen dat de introductie van DLL's een efficiënte geheugenorganisatie mogelijk zou maken schijfruimte waarbij slechts één exemplaar van de bibliotheekmodule wordt gebruikt diverse toepassingen. Dit was vooral belangrijk voor eerdere versies Microsoft Windows met ernstige geheugenbeperkingen.

Verder was het bedoeld om de efficiëntie van ontwikkeling en gebruik te verbeteren systeemhulpmiddelen vanwege modulariteit. Het vervangen van DLL-programma's van de ene versie naar de andere zou het mogelijk moeten hebben gemaakt om het systeem onafhankelijk uit te breiden zonder dat dit gevolgen had voor de applicaties. Bovendien kunnen DLL's door verschillende soorten toepassingen worden gebruikt, bijvoorbeeld Microsoft Office, Microsoft Visuele Studio enz.

Vervolgens groeide het idee van modulariteit uit tot het COM-concept.

In feite zijn de volledige voordelen van de DLL-implementatie niet bereikt vanwege een fenomeen dat de DLL-hel wordt genoemd. DLL Hell treedt op wanneer meerdere applicaties tegelijkertijd verschillende, niet volledig compatibele, versies van DLL's nodig hebben, waardoor deze applicaties vastlopen. Toen het systeem een ​​bepaalde omvang bereikte, begon het aantal DLL's vele duizenden te overschrijden, ze waren niet allemaal volledig betrouwbaar en compatibel, en conflicten zoals DLL Hell begonnen heel vaak voor te komen, waardoor de algehele betrouwbaarheid van het systeem sterk afnam. Laat Microsoft-versies Windows begon parallel gebruik toe te staan verschillende versies DLL, wat de voordelen van het oorspronkelijke modulariteitsprincipe teniet deed. Het gebruik van verschillende versies van Dll wordt mogelijk gemaakt dankzij het manifestbestand (manifest), dat is opgeslagen in applicatiebronnen of in het formulier apart bestand in dezelfde directory als de applicatie.

Voorbeelden van het gebruik van DLL's in verschillende talen

Exporteren naar DLL

Delphi

bibliotheek Voorbeeld; (We voeren bepaalde acties uit en retourneren het resultaat) function AddNumbers(a, b: Double): Double; cdcl; begin AddNumbers:= a + b einde; (Deze functie wordt geëxporteerd) exporteert AddNumbers; (DLL-initialisatiefunctie, vergelijkbaar belangrijkste functies() in C en C++ ) begin einde.

C en C++

#erbij betrekken #define DLLEXPORT extern "C" __declspec(dllexport) // extern "C" specificeert het gebruik van eenvoudige C-stijl handtekeninggeneratie voor functies bij het verkrijgen van object // bestanden. Dit verhindert met name dat de C++-compiler // de functienaam // "versiert" (of "versiert") extra karakters bij export naar DLL /* Deze functie wordt geëxporteerd */ DLLEXPORT double AddNumbers(double a, double b) // Functieprototype (functie zonder hoofdtekst). Gebaseerd op deze gedeclareerde functiesignatuur, zal de zoektocht naar zijn hoofdtekst // bij het linken hieronder of in een andere worden uitgevoerd binair bestand; /* DLL-initialisatiefunctie, analoog van main() */ bool APIENTRY DllMain(HANDLE hModule, DWORD dwReason, LPVOID lpReserved) ( return TRUE; ) /* Body (implementatie) van het hierboven gedeclareerde functieprototype.

Voert bepaalde acties uit en retourneert het resultaat */ DLLEXPORT double AddNumbers(double a, double b) ( return a + b; )

Delphi

Importeren vanuit DLL

C en C++

#erbij betrekken programma Voorbeeld; ($APPTYPE CONSOLE) (Geeft aan dat de functie zich in een DLL bevindt) function AddNumbers(a, b: Double): Double; cdcl; externe "Voorbeeld.dll"; (We gebruiken de functie zoals gewoonlijk) var result: Double; begin resultaat:= AddNumbers(1, 2); Writeln("Het resultaat was: ", resultaat) end./* * Geef aan dat de functietekst zich in een ander bestand bevindt.

* Vergeet object één niet

DLL-module

bij het koppelen!<>0 en begin dan met @AddNumbers:= GetProcAddress(LibHandle, "AddNumbers"); // onthoud het adres // vereiste functie if @AddNumbers<>nul en begin dan resultaat:= AddNumbers(1, 2); // gebruik de functie Writeln("Het resultaat was: ", resultaat);

einde; GratisBibliotheek(LibHandle); // DLL-einde verwijderen; einde.

#erbij betrekken C en C++ #erbij betrekken

/* * Type te gebruiken functie * (combinatie van parametertypen en retourwaarde) */ typedef double (*importFunction)(double, double); int main(int argc, char **argv) ( importFunction addNumbers; double result; /* Laad de DLL in het geheugen */ HINSTANCE hinstLib = LoadLibrary("Example.dll"); if (hinstLib == NULL) ( printf(" FOUT: kan DLL niet laden\n"); return 1; ) /* Haal een functieaanwijzer op */ addNumbers = (importFunction)GetProcAddress(hinstLib, "AddNumbers"); if (addNumbers == NULL) ( printf("ERROR: kan de DLL-functie niet vinden\n"); return 1; ) /* Roep de functie op via de pointer */ result = addNumbers(1, 2); /* * Verwijder de DLL (in principe gebeurt dit * automatisch wanneer het programma afsluiten) * / FreeLibrary(hinstLib); /* Geef het resultaat weer */ printf("Het resultaat was: %f\n", resultaat);

Kwetsbaarheden in DLL-mechanismen

De kwetsbaarheid ligt in het feit dat veel programma's bij het aanroepen van de functie LoadLibrary() niet controleren of het pad waar deze bibliotheek kan worden geladen juist is. Ze maken dus vervanging van de uitvoerbare bibliotheek mogelijk. Dit komt door het feit dat het zoeken naar de geladen bibliotheek voornamelijk wordt uitgevoerd in de map die de afbeelding bevat van het uitvoerbare bestand dat het proces heeft voortgebracht (de vervangen bibliotheek wordt uitgevoerd met de rechten van de gebruiker die het proces heeft gestart). DLL-formaatbestanden worden geopend speciale programma's . Er zijn 2 soorten DLL-formaten, die elk worden geopend verschillende programma's . Om te openen gewenste soort

formaat, bestudeer de bestandsbeschrijvingen en download een van de voorgestelde programma's.

Bestandsextensie .DLL

Het programma HELPER.DLL helpt u bij het vinden en installeren van ontbrekende of beschadigde DLL-bibliotheken. Bestanden in DLL-indeling bevatten instellingen voor koppelingen naar verschillende bronnen die door het programma worden gebruikt, bijvoorbeeld pictogrammen. DLL's zijn uitsluitend bedoeld voor Windows OS. Op anderen besturingssystemen U kunt dergelijke bestanden alleen openen met behulp van emulators (met uitzondering van platformonafhankelijke toepassingen voor Mac OS). Dat moet men onthouden moderne programma's

ondersteunen geen bestanden voor 16-bits architectuur.

In de meeste gevallen hoeft de gebruiker geen DLL-bestanden te openen, aangezien deze uitsluitend voor ontwikkelaars bedoeld zijn. Bewerken dit bestand kan een negatief effect hebben op de prestaties individuele programma's en besturingssysteem, daarom moet u het Dll-bestand vinden en er een kopie van maken.

Programma's voor het openen van DLL-bestanden

Bekijk de broncode

Een van de meest gebruikelijke manieren om een ​​Dll-extensie te bekijken is . Het programma heeft ingebouwde functies voor het decompileren van sommige bestanden, zodat u dll's kunt debuggen, en het allerbelangrijkste: het is volledig gratis. Uiteraard garantie juiste weergave code voor alle bestanden is niet mogelijk.

Als alternatief kunt u de dotPeek-decompiler gebruiken. Het is ook gratis, maar werkt alleen met programma's die in C# zijn geschreven.

De programma-interface instellen

Het meest geschikt voor dit doel. Met dit programma kunt u eenvoudig pictogrammen, dialoogvensters wijzigen of installeren eigen animatie. Helaas wordt het programma zelfs betaald voor niet-commercieel gebruik. Houd er rekening mee dat er problemen kunnen optreden met de bestanden grote maten(ongeveer 1 GB of meer).

Foutopsporing

Het meest op een eenvoudige manier is om Visual Studio van Microsoft te gebruiken. Dit is een redelijk functionele tool, waarvan de mogelijkheden onder meer het debuggen van programma's omvatten, maar het helpt alleen als het bestand niet is beveiligd.

Als u in plaats daarvan alleen de DLL hoeft te downloaden gebroken bestand(of de Dll ontbreekt), dan zal de DLL-helper hier helpen - een volledig gratis programma.

Dynamische webpagina's

Er is nog een ander DLL-formaat: bestanden die code voor websites genereren. Dergelijke bibliotheken kunnen in elke geschikte ontwikkelomgeving worden geopend, bijvoorbeeld Visuele Studio. De browser helpt u ze in actie te testen. Beter te gebruiken nieuwste versies populaire browsers, anders wordt het bestand mogelijk niet correct weergegeven.

Een webpagina die automatisch wordt aangemaakt tijdens gebruikerstoegang. Kan server-side scripts combineren, zoals Perl of , die code voor webpagina's genereren.

Webpagina's in extensiebestanden DLL's vaker in totaal worden opgeslagen op Microsoft IIS-webservers. De DLL-extensie moet worden toegewezen aan de juiste serverscriptengine om de pagina correct te kunnen verwerken.

Een gecompileerd bibliotheekbestand met een reeks procedures en/of stuurprogramma's waarnaar wordt verwezen en die worden uitgevoerd door een programma. Staat toe diverse programma's toegang tot publiek systeem functies door standaard bibliotheken. Kan dynamisch worden gekoppeld binnen een programma terwijl het draait.

Veel DLL-bestanden (lees DLL) worden door het besturingssysteem geleverd Windows-systeem, andere zijn inbegrepen Windows-programma's. Ze bieden ook verschillende softwarefuncties, zoals verbinding maken met externe apparaten zowel ingangs- als uitgangssignaal harde schijf. Er kan ook naar verwezen worden door platformonafhankelijke Mac-applicaties.

Opmerking: het verwijderen of wijzigen van de inhoud van een DLL-bestand kan fouten veroorzaken in het programma dat naar het bestand verwijst. Daarom mogen DLL-bestanden niet worden geopend of bewerkt.

Soms verschijnt er bij het starten van een programma een melding dat het *. dll(bijvoorbeeld VCompLib.dll) of *. ocx(bijvoorbeeld seon.ocx). In dit geval start het programma uiteraard niet.

Foutmeldingen kunnen verschillend zijn (het hangt vooral af van de taal waarin het programma is geschreven), bijvoorbeeld: "Component "MSCOMM32.OCX" niet correct geregistreerd: bestand ontbreekt of is ongeldig" , of "De toepassing kan niet worden gestart omdat MSVBVM50.DLL niet is gevonden. Herinstallatie applicatie kan dit probleem oplossen", of "Runtime DLL/OCX-bestandsfout". Tegelijkertijd, binnen Windows Vista er verschijnt een extra venster Programmacompatibiliteitsassistent met een boodschap Voor dit programma is een ontbrekend Windows-onderdeel vereist.

Korte informatie

· DLL (uit het Engels Dynamic-Link-bibliotheek dynamische linkbibliotheek)besturingssysteemconcept Microsoft Windows; dynamische bibliotheek die herhaald gebruik door verschillende softwaretoepassingen mogelijk maakt. K DLL soms ook controles ActiveX En . in de wereld UNIX soortgelijke functies worden uitgevoerd door de zogenaamde gedeelde objecten(“gedeelde objecten”). Bestandsformaat *. dll volgt dezelfde conventies als de *. exe, waarbij code, tabellen en bronnen worden gecombineerd.

ActiveX naam van een groep ontwikkelde technologieën Microsoft voor het programmeren van componentgebaseerde, modelgebaseerde objecttoepassingen COM.

· COM(afgekort uit het Engels) Component-objectmodel) componentobjectmodel Microsoft, een standaardmechanisme dat interfaces omvat waarmee sommige objecten hun diensten aan anderen aanbieden; is de basis van velen objecttechnologieën, inbegrepen OLE En ActiveX).

OLE(afgekort uit het Engels) Voorwerp Koppelen en Inbedding) algemene naam (tot 1996) voor een groep objectgeoriënteerde technologieën Microsoft gebaseerd op COM (OLE 1, OLE 2, OLE-automatisering, OLE-database enz.).

· ActiveX-besturingcontrole-element ActiveX; geïntroduceerd in 1996 Microsoft nieuwe naam voor onafhankelijke programmeerbare componenten, voorheen genoemd OLE-besturingselementen, OCX'en, Aangepaste OLE-besturingselementen; in tegenstelling tot de laatste kun je ermee werken Internet.

· OCX(afgekort uit het Engels) Aangepaste OLE-uitbreiding) beweegbare bedieningselementen, OLE-aangepast beheer, OLE-controle. ocx we kunnen zeggen dat bestanden *. ActiveX dit zijn de controles dll.

· OLE-aangepast beheer, met ongeveer dezelfde functies als *. OLE, OLE-controle.

gespecialiseerd bedieningselement OLE-controle OLE controle-elementen OLE, programmeerbare applicatiecomponenten met een interface gebaseerd op , waardoor het gemakkelijk wordt om ze in andere toepassingen op te nemen; sinds 1996 worden ze genoemd ActiveX-besturing OCX, . Synoniemen:.

OLEaangepast beheer

Manieren om het probleem op te lossen dll Als u fouten tegenkomt met betrekking tot *. ocx En *.

, nodig:

1. Installeer het programma opnieuw. dll Als u fouten tegenkomt met betrekking tot *. ocx 2. Als het opnieuw installeren van het programma niet helpt, moet u de aanwezigheid van de vereiste bestanden op het systeem controleren. Bestanden *. , moet zich in de regel in de map bevinden\WINDOWS\systeem32

(minder vaak - in de directory van een specifiek programma). Als de bestanden aanwezig zijn, hebt u ze nodig.

Als de vereiste bestanden er niet zijn, zoek ze dan op internet, download ze en kopieer ze naar de map \WINDOWS\system32 en naar de programmamap. Nu hebben we ze nodig. dll Als u fouten tegenkomt met betrekking tot *. ocx Bij registratie *. ze zijn opgenomen in Windows-register (dit kan ook handmatig). Tegelijkertijd in de draad parameter is gemaakt REG_DWORD 1 .

, bijvoorbeeld C:\Program Files\InterVideo\Common\Bin\StorageTools.dll of C:\WINDOWS\System32\MSCOMCTL.OCX, met de waarde dll Als u fouten tegenkomt met betrekking tot *. ocx Registreren *. uitgevoerd met behulp van een registratieserver regsvr32.exe

(waarvan het schijfadres C:\WINDOWS\system32 is).

Laten we eens kijken naar de registratiemethoden: 1. Klik.

Start – Uitvoeren… – Programma uitvoeren – regsvr32 bestandsnaam – OK 2. Klik Start – Uitvoeren… – Programma uitvoeren – cmd – OK . De commando-interpreter zal starten cmd.exe , na de systeemprompt C:\Documenten en instellingen\Gebruikersnaam> binnenkomen regsvr32 bestandsnaam

bijv. regsvr32 seon.ocx. 3. Als je gebruikt bestandsbeheerder Totaal commandant dll Als u fouten tegenkomt met betrekking tot *. ocx, dan kunt u zich registreren *. door te gebruiken opdrachtregel.

Totaal commandant

Opmerking Met behulp van de opdracht:

regsvr32

regsvr32] DLL-bestand/u DLL;

– annuleert de registratie/S

– “stille” modus – berichtvensters worden niet weergegeven;

8 antwoorden

Wat is een DLL-bestand?

DLL-bestanden lijken op EXE omdat het bestandsformaat zelf hetzelfde is. Zowel EXE als DLL zijn gebaseerd op het Portable Executable (PE)-formaat. DLL's kunnen ook COM-componenten en .NET-bibliotheken bevatten.

Wat bevat de DLL?

DLL bevat functies, klassen, variabelen, gebruikersinterfaces en bronnen (zoals pictogrammen, afbeeldingen, bestanden,...) die de EXE of andere bibliotheek gebruikt.

Bibliotheektypen:

In bijna alle besturingssystemen zijn er 2 soorten bibliotheken. Statische bibliotheken en dynamische bibliotheken. IN Windows-extensies De bestanden zijn als volgt: statische bibliotheken (.lib) en dynamische bibliotheken (.dll). Het belangrijkste verschil is dat statische bibliotheken tijdens het compileren aan het uitvoerbare bestand worden gekoppeld; terwijl dynamisch gekoppelde bibliotheken pas tijdens runtime worden gekoppeld.

Meer informatie over statische en dynamische bibliotheken:

Normaal gesproken zie je echter geen statische bibliotheken op je computer, omdat de statische bibliotheek rechtstreeks in de module is ingebouwd (EXE of DLL). Dynamische bibliotheek is een zelfstandig bestand.

De DLL kan op elk moment worden gewijzigd en wordt alleen tijdens runtime geladen wanneer de EXE de DLL expliciet laadt. Statische bibliotheek kan niet worden gewijzigd nadat het in EXE is gecompileerd. DLL's kunnen afzonderlijk worden bijgewerkt zonder de EXE zelf bij te werken.

Het programma laadt de DLL wanneer het wordt gestart via de Win32 LoadLibrary API of wanneer het afhankelijk is van een andere DLL. Het programma gebruikt GetProcAddress om een ​​functie te laden of LoadResource om een ​​bron te laden.

Verder lezen:

Gerelateerde vragen


Soortgelijke vragen

8 antwoorden

DLL-bestanden zijn binaire bestanden, die uitvoerbare code en bronnen zoals afbeeldingen, enz. kan bevatten. In tegenstelling tot applicaties kunnen ze niet rechtstreeks worden uitgevoerd, maar laadt de applicatie ze wanneer dat nodig is (of onmiddellijk tijdens het opstarten).

Hoe belangrijk zijn ze?

De meeste applicaties laden de DLL-bestanden die ze nodig hebben wanneer ze worden gestart. Als een van deze niet wordt gevonden, kan het systeem het proces helemaal niet starten.

Voor DLL-bestanden zijn mogelijk andere DLL-bestanden nodig

Net zoals een toepassing een DLL-bestand nodig heeft, kan een DLL-bestand afhankelijk zijn van andere DLL-bestanden. Als een van deze DLL-bestanden niet in de afhankelijkheidsketen wordt gevonden, wordt de toepassing niet geladen. Dit kan eenvoudig worden opgespoord met behulp van hulpprogramma's voor afhankelijkheidsafhankelijkheid, zoals Dependency Walker.

Er zijn er zoveel in systeemmappen

Meest functionaliteit systemen gepresenteerd gebruikersprogramma als DLL-bestanden, omdat dit de standaardvorm is delen code/bronnen. Elke functionaliteit wordt afzonderlijk opgeslagen in verschillende DLL-bestanden, dus alleen benodigde bestanden DLL en vermindert daardoor de geheugenbeperkingen op het systeem.

Geïnstalleerde applicaties gebruik ook DLL-bestanden

DLL-bestanden worden ook een vorm van fysieke scheiding van functies, zoals hierboven uitgelegd. Goede apps Probeer ook geen DLL-bestanden te laden totdat ze absoluut noodzakelijk zijn, waardoor de geheugenvereisten afnemen. Dit zorgt er ook voor dat applicaties veel DLL-bestanden verzenden.

DLL-hel

Soms onderbreken systeemupdates echter vaak andere programma's als er een versiemismatch is tussen de gedeelde DLL-bestanden en het vereiste programma. Systeem controlepunten en cache-DLL enz. Er zijn M$-initiatieven geweest om dit probleem aan te pakken. Het .NET-framework komt dit probleem mogelijk helemaal niet tegen.

Hoe weten we wat er in een DLL-bestand zit?

U moet een externe tool zoals DUMPBIN of Dependency Walker gebruiken, die niet alleen laat zien welke zichtbare functies(bekend als export) in DLL-bestanden, evenals welke andere DLL-bestanden er nodig zijn en welke exporten vanuit deze DLL-bestanden, dit DLL-bestand hangt af van.

Hoe maken/gebruiken we ze?

Raadpleeg de softwaredocumentatie van uw leverancier. Voor C++ raadpleegt u LoadLibrary op MSDN.

Stel dat u een uitvoerbaar bestand maakt dat enkele van de functies uit de bibliotheek gebruikt.

Als de bibliotheek die u gebruikt statisch, kopieert de linker de objectcode voor deze functies rechtstreeks uit de bibliotheek en plakt deze in het uitvoerbare bestand.

Als dit uitvoerbare bestand actief is, heeft het alles wat het nodig heeft, dus de uitvoerbare lader laadt het eenvoudigweg in het geheugen en voert het uit.

Als de bibliotheek dynamisch, zal de linker geen objectcode invoegen, maar eerder een stub invoegen die in feite zegt dat deze functie hierin zit DLL op deze plek.

Als dit uitvoerbare bestand actief is, ontbreken er stukjes van het uitvoerbare bestand (zoals stubs), dus de lader doorloopt het uitvoerbare bestand en repareert de ontbrekende stubs. Pas nadat alle stubs zijn opgelost, mag het uitvoerbare bestand worden uitgevoerd.

Om dit in actie te zien, verwijdert u de DLL of hernoemt u deze en ziet u hoe de lader de ontbrekende meldt DLL-fout wanneer u een uitvoerbaar bestand probeert uit te voeren.

Daarom de naam Dynamische linkbibliotheek,Delen van het koppelingsproces worden tijdens runtime dynamisch uitgevoerd door de uitvoerbare lader.

Nog een laatste opmerking: als u niet naar de DLL linkt, worden er geen stubs ingevoegd door de linker, maar Windows biedt nog steeds de API GetProcAddress, waarmee de uitvoering van een DLL kan worden geladen nadat het uitvoerbare bestand is gestart.

DLL-bestanden bevatten Tabel exporteren, een lijst met tekens die door het oproepende programma kan worden bekeken. Symbolen zijn meestal functies met de C-aanroepconventie (__stcall). De exporttabel bevat ook het adres van de functie.

Met deze informatie programma bellen kan vervolgens functies binnen de DLL aanroepen, zelfs als deze tijdens het compileren geen toegang had tot de DLL.

DLL's (Dynamic Link Libraries) en SL's (UNIX-equivalent Shared Libraries) zijn eenvoudigweg uitvoerbare codebibliotheken die tijdens het laden dynamisch aan het uitvoerbare bestand kunnen worden gekoppeld.

Statische bibliotheken worden tijdens het compileren in het uitvoerbare bestand ingevoegd en vanaf dat moment vastgelegd. Ze vergroten de grootte van het uitvoerbare bestand en kunnen niet worden gesplitst.

Dynamische bibliotheken hebben de volgende voordelen:

1/Ze worden tijdens runtime geladen in plaats van gecompileerd, zodat ze onafhankelijk van het uitvoerbare bestand kunnen worden bijgewerkt (al die mooie vensters en dialoogvensters degene die je op Windows ziet, komen uit een DLL, dus verschijning uw aanvraag kan worden gewijzigd zonder deze te herschrijven).

2/Omdat ze onafhankelijk zijn, kan de code worden opgesplitst in meerdere uitvoerbare bestanden. Dit bespaart geheugen, want als u 100 applicaties uitvoert met één DLL, is er mogelijk slechts één kopie van de DLL in het geheugen.

Hun grootste nadeel is voordeel #1: het onafhankelijk van de applicatie wijzigen van de DLL kan ervoor zorgen dat uw applicatie niet meer werkt of zich vreemd gedraagt. DLL-versies worden doorgaans niet zo goed beheerd onder Windows, wat leidt tot de mooie naam "DLL Hell".