Welkom op de Nederland Computer Kennisnetwerk!  
 
Zoeken computer kennis
Home Hardware Netwerken Programmering Software Computerstoring Besturingssysteem
Computer Kennis >> Programmering >> C /C + + Programming >> Content
Dynamische Calling functies in DLL's
Een Dynamic Link Library of DLL , kan een aanvraag tot alleen het noodzakelijke minimum uitvoerbare code in het geheugen geladen 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 is een DLL -functie , die DLL hoeft geen ruimte innemen niet verwijzen . Dit bespaart veel middelen en verhoogt run - time performance . Als de bibliotheek statisch waren , zouden alle van de bibliotheek code 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 gedeelde bibliotheek , dat gebouwd is met de extensie " . Zo . " Windows , Unix en Linux hebben specifieke conventies om functies in DLL of gedeelde bibliotheken. Export Windows DLL Objecten behulp dllexport Keyword

Om een ​​functie , klasse , data-element of klasse lid functie toegankelijk voor het bellen naar Windows- programma te maken , moet u deze eerst te exporteren . Een klasse of functie kan gedurende de definitie met het trefwoord " __declspec ( dllexport ) " worden uitgevoerd alvorens de functie , klasse of naam van de variabele , als volgt :

Void __ declspec
( dllexport ) MijnKlasse : openbare CObjectName { ..... }

In de header file DLL , zet dit zoekwoord voordat de functienaam in een prototype verklaring . Het trefwoord " __declspec ( dllexport ) " slaat de functienamen in de DLL 's export tafel. Om de ruimte die deze tabel inneemt bezuinigen , gebruiken rangtelwoorden plaats van functienamen .
Export Windows DLL Objecten Door Module Definition Files

Als alternatief voor het zoekwoord " __declspec ( dllexport ) , " maak een module definitie bestand dat de naam van de bibliotheek staat , optionele beschrijving en bevat de namen van de functies , klassen en data variabelen in de DLL samen met optionele ordinale waarden . De ordinale waarde van een functie varieert van 1 tot N , waarbij N het aantal functies in de DLL . De module definitie bestand heeft de extensie Hieronder volgt een voorbeeld van een module definitie bestand , of een DEF -bestand ' DEF . '. : .

BIBLIOTHEEK ReportWriterDESCRIPTION
Deze dynamische bibliotheek bevat het rapport generator functionaliteit van MyProduct.RPT_setup @ 1RPT_design @ 2RPT_run @ 3RPT_print @ 4

Als u een Microsoft Foundation Class DLL met behulp van Visual Studio 's AppWizard te creëren , zal de wizard een skelet . DEF -bestand voor de DLL te genereren en toe te voegen aan het project . Vermeldingen toevoegen voor DLL- functies in deze . DEF -bestand om ze te exporteren. Het formaat van de functie prototype door de aanroepende programma moet de vorm van de functie vermeldingen in het . DEF bestand. Ofwel gebruik maken van eenvoudige definities in beide plaatsen , of compiler - specifieke , compiler - gegenereerde definities in beide plaatsen consequent .
Import en Export Extension DLL

Microsoft Foundation Class extensie DLL bestaat typisch uit herbruikbare klassen afgeleid van bestaande MFC types klasse . Ze zijn gebouwd met behulp van een DLL -versie van MFC , en kan worden opgeroepen vanuit toepassingen en DLL's gebouwd met behulp van deze gedeelde versie van MFC . Om lessen in extensie DLL's exporteren , gebruikt u de macro " AFX_EXT_CLASS " vóór de naam van de klasse als volgt: Klasse AFX_EXT_CLASS CMyViewClass : openbare CView { //Klasse body }; Als u gebruik maakt van een DEF -bestand , voeg de volgende macro code aan het begin . en het einde van de verlengde DLL header file : # undef AFX_DATA # define AFX_DATA AFX_EXT_DATA // # undef AFX_DATA # define AFX_DATA

Deze preprocessorinstructies ervoor zorgen dat de MFC variabelen en afleidingen en geëxporteerd van het uitgebreide DLL .
importeren DLL functies

de andere kant van de exporterende objecten van DLL's is het importeren van hen in toepassingen met behulp van de " __declspec ( dllimport ) "keyword .
Export C Functies voor gebruik in C of C + + Executables

Als het oproepende programma of functie is geschreven in C + + , gebruik de" extern C " preprocessor richtlijn in de DLL header Hier is een voorbeeld ://MyDLLFunctions.h # ifdef __ cplusplusExtern " C " { # endif__declspec ( dllimport ) nietig MyFunc01 ( ) als de DLL functies in C.

zijn geschreven ; __declspec ( dllimport ) leegte MyFunc02 ( ) ; # ifdef __ cplusplus } //end beugels voor " extern C " -richtlijn # endif

Als alternatief voor de " extern C " richtlijn specificeren binnen het DLL header , kunt u de header -bestand DLL omvatten met een " Extern " C " " wrapper voorwaardelijk , als volgt :

# ifdef __ cplusplusExtern " C " { # endif

# include " DllPath \\ MyDLLFunctions.h "

# ifdef __ cplusplus } //end beugels voor " extern C " -richtlijn # endif

Previous: Next:
  C /C + + Programming
·Hoe te Figuur uit het aantal e…
·Hoe een MFC Alarm Application …
·Hoe te converteren CPP om DLL 
·Hoe te OLE gebruiken Met Visua…
·Hoe je Object Implementatie ve…
·Hoe maak je aanleg van een kla…
·Hoe Set Up Bytes om numerieke …
·Hoe te embedden in Python 
·C Programming Fouten & hoe je …
  Related Articles
Visual Basic String Functions 
Wiskundige functies in Visual Basic 
Visual Basic Math Functions Tutorial 
Wat zijn de functies van Visual Basic ? 
Lijst met functies in Visual Basic 
Visual Basic Controls & Functions 
Vaste Vs . Dynamische Array in Visual Ba…
VBS Array Functies 
Hoe maak je een Dynamic Link Library Cre…
  Programmering Articles
·Hoe te converteren Decimaal naar hexadec…
·Hoe Search Engine Ranking of SEO van een…
·Hoe maak je een menu Step - by - Step vo…
·Hoe je Magic Quotes in PHP Disable 
·Hoe maak je een globale variabele in SSI…
·Instrumenten gebruikt in Software Develo…
·Hoe maak je een beetje te converteren na…
·Verschillen tussen Visual Basic en Visua…
·Java & API Explained voor ouders 
Copyright © Computer Kennis http://www.nldit.com