Een Dynamic Link Library of DLL Get , kan een aanvraag tot alleen het noodzakelijke minimum uitvoerbare code te laden in het geheugen tijdens runtime . Wanneer het programma vraagt een functie in een DLL-bestand , het besturingssysteem laadt de DLL in het geheugen volgens de specificaties van de programmeur . Zolang het lopende programma geen DLL- functie verwijzen , de DLL hoeft geen ruimte innemen . Dit bespaart hulpbronnen en verhoogt runtime prestaties . Als de bibliotheek statisch waren , zouden alle bibliotheek -code het worden toegevoegd aan het hoofdprogramma 's uitvoerbare code , en de reus programma zou moeten blijven in het geheugen voor de gehele looptijd . De Unix- of Linux -versie van een Windows DLL is een gezamenlijk object bibliotheek die is gebouwd met de extensie SO . Windows , Unix en Linux hebben specifieke conventies om functies in DLL of gedeelde bibliotheken. Instructies Export Windows DLL Objecten behulp Preprocessor Trefwoord 1 je DLL header -bestand , zet het trefwoord " __declspec ( dllexport ) " vóór het prototype van een functie , klasse , klasse lid of gegevensvariabele in de DLL . Dit sleutelwoord voegt de functie prototype aan de DLL 's export tafel . Kopen van 2 Gebruik ordinale waarden 1 tot N in plaats van de functie of class namen van leden aan ruimte bezet door de DLL 's export tafel te besparen , waarbij N het aantal objecten of functies in de DLL . 3 Voeg het trefwoord " __declspec ( dllimport ) " voor de betreffende functie prototypes in het oproepende programma of DLL . De invoer programma aanroepen van de functies die de DLL export . Export Windows DLL -functies Met behulp van een Module Definition File 4 Maak een tekstbestand met de extensie DEF en voeg deze toe . om het project voor uw DLL in Visual Studio 5 Voeg de " BIBLIOTHEEK " verklaring met de naam van de DLL nadat het als volgt : BIBLIOTHEEK ReportWriter < br > 6 Eventueel voeg een korte eenregelige beschrijving voor de DLL als volgt : bESCHRIJVING genealogie Dit is een DLL voor het genereren van rapporten functionaliteit in MyProduct Dit wordt aanbevolen . . 7 Voeg een vermelding voor elke functie of klasse lid dat de DLL wil exporteren , met een optionele kardinaal getal . Het kardinale getal geeft de functie en waarden aanneemt van 1 tot N , waarbij N het aantal functies uitgevoerd door de DLL . Hier is een voorbeeld : RPT_init @ 1RPT_design @ 2RPT_run @ 3RPT_print @ 4 Na het koppelen van alle bron en dit DEF bestand , de compiler creëert een exportbestand met de EXP uitbreiding en een bibliotheek -bestand importeren met de LIB extensie . De compiler maakt gebruik van het EXP -bestand om de DLL te creëren . Het LIB bestand is gekoppeld aan het aanroepende programma en houdt import informatie over de functies in de DLL .
|