| Hjem | Hardware | Netværk | Programmering | software | Fejlfinding | systemer | 
Programmering  
  • C /C + + Programming
  • Computer Programmeringssprog
  • Delphi programmering
  • Java programmering
  • JavaScript Programmering
  • PHP /MySQL programmering
  • Perl programmering
  • Python Programming
  • Ruby Programming
  • Visual Basics Programmering
  •  
    Computer Viden >> Programmering >> C /C + + Programming >> Content
    Dynamisk Calling funktioner i DLL
    En dynamisk link library , eller DLL , giver en ansøgning til at indlæse kun det nødvendige minimum eksekverbar kode i hukommelsen under kørslen . Når programmet kalder en funktion i en DLL, operativsystemet indlæser DLL i hukommelsen i overensstemmelse med programmør specifikationer. Så længe det igangværende program ikke referere til en DLL -funktion, der DLL behøver ikke optager plads. Det sparer en masse ressourcer og øger run-time performance. Hvis biblioteket var statiske , ville alle af biblioteket koden vedlægges vigtigste programmets eksekverbare kode og den gigantiske program ville have at bo i hukommelsen for hele køretid . Unix eller Linux version af en Windows DLL er et delt bibliotek , bygget i overensstemmelse hermed med endelsen " . Det. " Windows , Unix og Linux har specifikke konventioner få adgang til funktioner i DLL eller delte biblioteker. Eksport Windows DLL Objects Brug dllexport Keyword

    For at lave en funktion , klasse, dataelement eller klasse medlemsfunktion tilgængelig for kalder Windows-program , skal du eksportere den først. En klasse eller funktion må eksporteres i løbet af sin definition bruge søgeordet " __declspec ( dllexport ) " før funktionen , klasse eller variabel navn, følger som : Hej

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

    DLL header fil , sætte dette søgeord, før funktionen navn i en prototype erklæring. Nøgleordet " __declspec ( dllexport )" gemmer funktionen navne i DLL eksport bord. At spare den plads, denne tabel indtager bruge ordenstal i stedet for navne på funktioner .
    Eksport Windows DLL genstande gennem Modul Definition Files

    Som et alternativ til søgeordet " __declspec ( dllexport ) , "at skabe et modul definition fil, som hedder biblioteket navn, valgfri beskrivelse og indeholder navnene på funktioner , klasser og data variabler i DLL sammen med valgfri ordenstal værdier. Ordenstal værdi af en funktion i området fra 1 til N, hvor N er antallet af funktioner i DLL . Modulet definition fil har udvidelsen Følgende er et eksempel på et modul definition fil eller en DEF -fil " DEF . ". : .

    LIBRARY ReportWriterDESCRIPTION Denne dynamiske bibliotek indeholder rapporten generator funktionalitet MyProduct.RPT_setup @ 1RPT_design @ 2RPT_run @ 3RPT_print @ 4 fotos p Hvis du opretter en Microsoft Foundation Class DLL ved hjælp af Visual Studio AppWizard , vil guiden generere et skelet. DEF fil til DLL og føje den til projektet. Tilføj poster for DLL funktioner i dette. DEF fil at eksportere dem. Formatet af funktionen prototype anvendes af det kaldende program skal matche formatet af funktionen poster i . DEF fil. Enten bruge enkle definitioner begge steder eller compiler -specifikke, compiler - genererede definitioner i begge steder konsekvent.
    Import og eksport Extension DLL'er

    En Microsoft Foundation Class udvidelse DLL består typisk af genanvendelige klasser stammer fra eksisterende MFC klasse typer . De er bygget ved hjælp af en DLL version af MFC , og kan kaldes fra applikationer og DLL-filer er bygget ved hjælp af denne delte version af MFC . Sådan eksporterer klasser i forlængelse DLL'er , kan du bruge makro " AFX_EXT_CLASS " før klassen navn som dette : Klasse AFX_EXT_CLASS CMyViewClass : public CView { //Klasse krop }; Hvis du bruger en DEF -fil , skal du tilføje følgende makrokode i begyndelsen. og slutningen af ​​den forlængede DLL header fil: # undef AFX_DATA # define AFX_DATA AFX_EXT_DATA // # undef AFX_DATA # define AFX_DATA

    Disse præprocessortilvalg direktiver sørge for, at MFC variabler og afledninger og eksporteres fra den udvidede DLL .
    import DLL funktioner

    den anden side af eksport objekter fra DLL importerer dem til applikationer ved hjælp af " __declspec ( dllimport ) " søgeord.
    Export C Funktioner til brug i C eller C + + Eksekverbare
    p Hvis det kaldende program eller funktion er skrevet i C + +, bruge" extern C " præprocessor direktiv i DLL header hvis DLL funktioner skrevet i C.

    Her er et eksempel ://MyDLLFunctions.h # ifdef __ cplusplusExtern "C" {# endif__declspec ( dllimport ) void MyFunc01 (); __declspec ( dllimport ) void MyFunc02 (); # ifdef __ cplusplus } //endebeslag for " extern C "-direktiv # endif

    Som et alternativ til angivelse af " extern C " direktivet inden for den DLL header , kan du medtage DLL header fil med en " Extern " C " " wrapper betinget , som følger : Hej

    # ifdef __ cplusplusExtern "C" {# endif

    # include " DLLPATH \\ MyDLLFunctions.h "

    # ifdef __ cplusplus } //slut beslag til " extern C " direktivet # endif

    Forrige :

    næste :
      Relaterede artikler
    ·Hvordan man skriver et program i C for at udskrive seri…
    ·Sådan Design din egen spil ved hjælp af C + + 
    ·Hvordan til at returnere en pointer til en Vector 
    ·Sådan Konverter til Hex Brug C + + 
    ·Sådan Embed Python I Visual C 2008 
    ·Sådan bruges Radioknapper i Visual C 
    ·Sådan Konverter Int32 i C + + 
    ·Hvad er de fire forskellige typer Inheritance Relations…
    ·Sådan Læs et linje ved hjælp af CPP 
    ·Hvordan Lær C # for begyndere 
      Anbefalede Artikler
    ·Sådan Send SMS med ASP.NET 
    ·AJAX PHP MySQL Tutorial 
    ·Sådan Tælle forekomster af et tegn i en String i PHP 
    ·Sådan fjernes et Alias ​​i AIX 
    ·Sådan læses en USB joystick i Visual Basic 
    ·Sådan fjernes Databindings Fra et Textbox 
    ·Sådan afspille en lydfil i PHP 
    ·Sådan installeres LiveWires Pakker i Python 
    ·Sådan aktiveres visse poster på en Radio Button liste…
    ·Sådan installeres Centos Ruby on Rails til 1.9.2 Apach…
    Copyright © Computer Viden http://www.computerdk.com