Dator
 |  Startsida |  Hårdvara |  Nätverk |  Programmering |  Programvara |  Felsökning |  System |   
Programmering
  • C /C + + -programmering
  • Computer Programspråk
  • Delphi Programmering
  • Java Programming
  • JavaScript programmering
  • PHP /MySQL Programmering
  • perl Programmering
  • python Programming
  • Ruby programmering
  • Visual Basics Programmering
  • * Dator Kunskap >> Programmering >> C /C + + -programmering >> Content

    Dynamisk Calling funktioner i DLL

    En dynamisk länk bibliotek eller DLL , gör ett program för att ladda bara den nödvändiga koden minsta körbar i minnet vid körning . Närhelst programmet anropar en funktion i en DLL , laddar operativsystemet DLL i minnet i enlighet med programmerarens specifikationer . Så länge kör programmet refererar inte en DLL-funktion , som DLL behöver inte upptar utrymme . Detta sparar mycket resurser och ökar run - time prestanda . Om biblioteket var statiska , skulle alla bibliotekets kod fogas till huvudprogrammet körbara kod , och den gigantiska programmet skulle behöva stanna i minnet för hela drifttid . Unix eller Linux-version av en Windows DLL är ett delat bibliotek , byggd i enlighet med filändelsen " . Så . " Windows , Unix och Linux har särskilda konventioner för att komma åt funktioner i DLL-filer eller delade bibliotek . Exportera Windows DLL objekt med dllexport Keyword

    att göra en funktion , klass , dataelement eller gruppmedlem funktion tillgänglig för anropande Windows -program , måste du exportera den först . En klass eller funktion får exporteras under sin definition med nyckelordet " __declspec ( dllexport ) " innan funktionen , klass eller variabelnamn , enligt följande :

    Void __ declspec ( dllexport ) MyClass : offentlig CObjectName { ..... }

    i DLL header -filen , lägger detta sökord innan funktionen namnet på en prototyp deklaration . Sökordet " __declspec ( dllexport ) " lagrar namn på funktioner i DLL Exportera tabell . För att hushålla med utrymmet att denna tabell upptar , använder ordningstal istället för namn på funktioner .
    Exportera Windows DLL Objekt igenom filer moduldefinition

    Som ett alternativ till sökordet " __declspec ( dllexport ) , " skapa en fil modul definition som anger bibliotekets namn , valfri beskrivning och listar namnen på funktioner, klasser och datavariabler i DLL tillsammans med valfria ordningstal värden . Ordningstalet för en funktion sträcker sig från 1 till N där N är antalet funktioner i DLL. Modulen definition filen har tillägget Nedan följer ett exempel på en modul definition fil , eller en DEF -fil " DEF . . " : .

    LIBRARY ReportWriterDESCRIPTION Denna dynamiska biblioteket innehåller funktionalitet rapportgenerator för MyProduct.RPT_setup @ 1RPT_design @ 2RPT_run @ 3RPT_print @ 4
    p Om du skapar en Microsoft Foundation Class DLL hjälp av Visual Studio AppWizard kommer guiden att generera ett skelett . DEF fil för DLL och lägga till den i projektet . Lägg till poster för DLL funktioner i detta . DEF fil att exportera dem . Formatet på funktionsprototyp används av den anropande programmet måste matcha formatet av funktionen poster i . DEF filen . Antingen använda enkla definitioner på båda ställena , eller kompilator - specifika , kompilator - genererade definitioner på båda ställena konsekvent.
    Import och export Extension DLL

    Microsoft Foundation Class förlängning DLL består typiskt av återanvändbara klasser härledda från befintliga MFC klasstyper . De är byggda med en DLL version av MFC , och kan anropas från program och DLL byggts med denna delade versionen av MFC . Att exportera klasser i förlängning DLL , använd makrot " AFX_EXT_CLASS " innan klassnamnet så här : Klass AFX_EXT_CLASS CMyViewClass : offentliga CView { //Klass kropp } , Om du använder en DEF -fil , lägg till följande makrokoden i början . och utgången av den förlängda DLL header -fil : # undef AFX_DATA # define AFX_DATA AFX_EXT_DATA // # undef AFX_DATA # define AFX_DATA

    Dessa förprocessorn direktiv se till att MFC variablerna och härledningar och exporterats från den utvidgade DLL . Addera importera DLL funktioner

    den andra sidan av exporterande objekt från DLL-filer är att importera dem till program som använder " __declspec ( DllImport ) " sökord.
    exportera C- funktioner som kan användas i C eller C + + körbara
    p Om det anropande programmet eller funktionen är skrivet i C + + , använder " extern C " förprocessor direktiv i DLL Header om DLL-funktioner är skrivna i C.

    Här är ett exempel ://MyDLLFunctions.h # ifdef __ cplusplusExtern "C" { # endif__declspec ( DllImport ) void MyFunc01 (); __declspec ( DllImport ) void MyFunc02 ( ) ; # ifdef __ cplusplus } //slut parentes för " extern C " direktiv # endif

    som ett alternativ till att ange " Extern C " direktiv inom DLL header , kan du inkludera filen DLL header med en "Extern" C " " wrapper villkorligt , enligt följande:

    # ifdef __ cplusplusExtern "C" { # endif

    # include " DLLPATH \\ MyDLLFunctions.h "

    # ifdef __ cplusplus } //slut parentes för " extern C " direktiv # endif

    Tidigare:

    nästa:
    relaterade artiklar
    ·Hur du använder Ctags Med UltraStudio
    ·Skillnad mellan C & Visual C
    ·Hur man utför I /O med binära filer i C + +
    ·Hur man använder ActiveX i C #
    ·Vad Är Struktur Variabler initieras till i C
    ·Hur man skapar en iPhone Ansökan om RSS på en webbpla…
    ·Hur Spola buffert i C + +
    ·Hur man deklarerar en statisk variabel i C
    ·Hur man kompilerar C kod med G+ +
    ·Konvertera BitArray till byte
    Utvalda artiklarna
    ·Vad är en Python Directory
    ·PHP kan ansluta till en MySQL-fjärrdatabas Men det kan…
    ·Hur man använder Apache ANT att Call Java
    ·Hur ansluta GoDaddy Java till MySQL
    ·Java Debugging Tekniker
    ·PHP överföringsvärden
    ·Hur man tar bort det sista tecknet i VB.Net
    ·Hur man Byta namn på en fil i Visual Basic 2005
    ·Hur man skapar en while-slinga i Ruby
    ·Hur till Stopp Grails i Jetty
    Copyright © Dator Kunskap http://www.dator.xyz