Datamaskin
  | Hjem | Hardware | Nettverk | Programmering | Software | Feilsøking | Systems | 
Programmering  
  • C /C + + Programming
  • Computer Programmeringsspråk
  • Delphi Programming
  • Java Programming
  • JavaScript Programmering
  • PHP /MySQL programmering
  • Perl Programming
  • Python Programming
  • Ruby Programming
  • Visual Basics Programming
  •  
    Datamaskin >> Programmering >> C /C + + Programming >> Content
    Dynamisk Calling funksjoner i DLL-filer
    En Dynamic Link Library eller DLL , gjør et program for å laste bare det nødvendige minimum kjørbar kode i minnet under kjøring. Når programmet kaller en funksjon i en DLL, laster operativsystemet DLL-filen i minnet i tråd med programmerer spesifikasjoner. Så lenge du kjører programmet ikke refererer en DLL- funksjon, som DLL trenger ikke opptar plass . Dette sparer mye ressurs og øker run- time ytelse . Hvis biblioteket var statiske , ville alle av biblioteket koden bli lagt til hovedprogrammet er kjørbar kode og den gigantiske program ville ha å bo i minnet for hele kjøretid . Unix eller Linux-versjon av en Windows DLL er et delt bibliotek , bygget tilsvarende med utvidelsen " . Så . " Windows , Unix og Linux har spesifikke konvensjoner for å få tilgang til funksjoner i DLL-filer eller delte biblioteker. Eksport Windows DLL objekter ved hjelp dllexport Søkeord

    å lage en funksjon , klasse, data element eller klasse medlem funksjon tilgjengelig for å kalle Windows -program , må du eksportere den først. En klasse eller funksjon kan bli eksportert i løpet av sin definisjon bruke søkeordet " __declspec ( dllexport ) " før funksjon, klasse eller variabel navn , som følger : en

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

    I DLL header -fil, legger dette søkeordet før funksjonen navnet på en prototype erklæring. Søkeordet " __declspec ( dllexport )" lagrer funksjon navnene i DLL eksport tabellen . Å økonomisere plass at denne tabellen okkuperer, bruke ordenstall i stedet for funksjon navn .
    Export Windows DLL Objects Gjennom moduldefinisjon filer
    p Som et alternativ til søkeordet " __declspec ( dllexport ) , "skape en moduldefinisjonen fil som sier biblioteket navn, valgfri beskrivelse og lister navnene på funksjoner, klasser og data variabler i DLL sammen med valgfrie ordinale verdier. Den Ordenstallet av en funksjon går fra 1 til N der N er antallet av funksjoner i DLL. Den moduldefinisjonen har filtypen Følgende er et eksempel på en modul definisjon fil , eller en DEF fil " DEF . ". : .

    BIBLIOTEK ReportWriterDESCRIPTION Denne dynamiske biblioteket inneholder rapporten generator funksjonalitet MyProduct.RPT_setup @ 1RPT_design @ 2RPT_run @ 3RPT_print @ 4
    p Hvis du oppretter en Microsoft Foundation Class DLL med Visual Studio AppWizard , vil veiviseren generere et skjelett . DEF -filen for DLL og legge den til i prosjektet. Legge til oppføringer for DLL-funksjoner i dette. DEF fil for å eksportere dem . Formatet på funksjon prototype brukes av kalle programmet må samsvare med formatet funksjon oppføringer i . DEF -filen. Enten bruke enkle definisjoner på begge steder , eller kompilator -spesifikke, kompilator - generert definisjonene i begge steder konsekvent .
    Import og eksport Extension DLL

    Microsoft Foundation Class forlengelse DLL består vanligvis av gjenbrukbare klasser utledet fra eksisterende MFC- klassen typer. De er bygget ved hjelp av en DLL versjon av MFC , og kan kalles fra programmer og DLLs bygget med denne felles versjon av MFC . Å eksportere klasser i forlengelse DLL-filer , bruker makro " AFX_EXT_CLASS " før klassen navnet slik: Klasse AFX_EXT_CLASS CMyViewClass : public CView { //Klasse body} ; Hvis du bruker en DEF fil , legge til følgende makro kode i begynnelsen. og slutten av den utvidede DLL header filen: # undef AFX_DATA # define AFX_DATA AFX_EXT_DATA // # undef AFX_DATA # define AFX_DATA

    Disse preprosessor direktiver sørge for at MFC variabler og avledninger og eksportert fra den utvidede DLL .
    importerer DLL -funksjoner

    den andre siden av eksport av gjenstander fra DLL-filer er å importere dem inn i programmer som bruker " __declspec ( DllImport ) "søkeord .
    Export C-funksjoner til bruk i C eller C + + kjørbare
    p Hvis det ringer program eller funksjon er skrevet i C + + , bruke" extern C " preprocessor direktiv i DLL header dersom DLL-funksjoner er skrevet i C.

    Her er et eksempel ://MyDLLFunctions.h # ifdef __ cplusplusExtern "C" {# endif__declspec ( DllImport ) void MyFunc01 (); __declspec ( DllImport ) void MyFunc02 (); # ifdef __ cplusplus } //end braketter for "ekstern C" direktiv # endif
    p Som et alternativ til å spesifisere " ekstern C" direktiv innenfor DLL header , kan du inkludere DLL header -fil med en " Ekstern " C " " wrapper betinget, som følger : en

    # ifdef __ cplusplusExtern "C " { # endif

    # include " DLLPATH \\ MyDLLFunctions.h "

    # ifdef __ cplusplus } //end braketter for "ekstern C" direktiv # endif

    früher :

     Weiter:
      Relatert Artike
    ·Hvordan få en System Date i C # 
    ·Hvordan lese et Word- dokument med C 
    ·Hvordan få tilgang til en USB -skriver Mens Programmer…
    ·Hvordan initialisert variabler i C 
    ·Hvordan regne ut antall elementer i en matrise C + + 
    ·Hva er Syntax i C + + 
    ·Hvordan sende FIFO Utgang til en fil 
    ·Hvordan Referanse C DLL-filer i Net 
    ·Hvordan skrive en C Program for å lese et heltall 
    ·Slik konverterer Void å Int 
      Anbefalte artikler
    ·Hvordan åpne MIME -filer i Outlook 2007 
    ·Hvordan bruke Python til Fetch API data 
    ·Slik deaktiverer PAM autentisering 
    ·Hvordan utvikle en test Plan 
    ·Hvordan lage Embedded Software 
    ·Hvordan bruke mysqladmin Flush -vertene kodet i PHP 
    ·Sette inn en VBA tekstboks 
    ·Hvordan lage en enkel Ubuntu Daemon i PHP 
    ·Hvordan Program TI - 83 Plus Games 
    ·Hvordan lage et tomt skjema Med Rullende hjelp VB6 
    Copyright ©  Datamaskin  http://www.datamaskin.biz/