Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
funkcie , triedy , dátový prvok alebo člen funkcie triedy prístupné volania programu systému Windows , musíte ho najprv exportovať . Triedy alebo funkcie môžu byť vyvezené počas jeho definíciu pomocou kľúčového slova " __declspec ( dllexport ) " predtým , než funkcie , triedy alebo názov premennej , takto :
void __ declspec ( dllexport ) Moje_třída : public CObjectName { ..... }
V súboru DLL záhlaví , dať toto kľúčové slovo pred názov funkcie vo vyhlásení prototypu . Kľúčové slovo " __declspec ( dllexport ) " ukladá názvy funkcií v DLL exportnej tabuľke . Ak chcete šetriť priestor , ktorý táto tabuľka zaberá , používať radové číslovky namiesto názvy funkcií .
Vývoz Windows DLL objekty cez Definícia modulu súbory
Ako alternatívu ku kľúčovým slovom " __declspec ( dllexport ) , " vytvorte súbor modulu definícia , ktorá uvádza názov knižnice , voliteľný popis a uvádza názvy funkcií , tried a dátových premenných v DLL spolu s voliteľným poradovým hodnotami . Ordinálne hodnota funkcie sa pohybuje v rozmedzí od 1 do N , kde N je počet funkcií v DLL . Súbor definícia modulu má príponu " .. DEF " Nasleduje príklad súboru definície modulu alebo súbor DEF : .
KNIŽNICA ReportWriterDESCRIPTION Táto dynamická knižnica obsahuje generátor zostáv funkčnosť MyProduct.RPT_setup @ 1RPT_design @ 2RPT_run @ 3RPT_print @ 4
Ak vytvoríte Microsoft Foundation Class DLL pomocou Visual Studio je AppWizard , bude sprievodca vygeneruje kostru . DEF súbor pre DLL a pridať do projektu . Pridať položky k DLL funkcií v tomto . DEF súbor exportovať . Formát prototypu funkcie používané volajúci program musí zodpovedať formátu záznamov funkcie v súbore . DEF . Buď použiť jednoduché definície na oboch miestach , alebo , definícia kompilátora generované kompilátor špecifické v oboch miestach trvalo .
Import a Export a Extension DLL
Microsoft Foundation Class príponu DLL sa zvyčajne skladá z opakovane použiteľných tried odvodených od existujúcich typov tried MFC . Sú postavené pomocou DLL verziu MFC , a môže byť volaná z aplikácií a DLL postavené pomocou tejto zdieľanej verzie MFC . Ak chcete exportovať triedy v príponu DLL , použite makro " AFX_EXT_CLASS " pred názov triedy , ako je tento : Trieda AFX_EXT_CLASS CMyViewClass : public CView { //Telo triedy } ; Ak používate súbor DEF , pridajte nasledujúci kód makra na začiatku . a koniec rozšíreného súboru DLL záhlavia : # undef AFX_DATA # define AFX_DATA AFX_EXT_DATA // Tieto direktívy preprocesoru uistite sa , že premenné MFC a derivácie a vyvážané z rozšíreného DLL . druhej strane exportu objektov z knižníc DLL je ich import do aplikácie pomocou " __declspec ( dllimport ) " kľúčové slovo . Ak volajúci program , alebo funkcia je napísaný + + , použite C " extern C smernice preprocesor " v záhlaví DLL v prípade , že funkcie DLL sú písané v C Tu je príklad ://MyDLLFunctions.h # ifdef __ cplusplusExtern " C " { # endif__declspec ( dllimport ) void MyFunc01 ( ) ; __ declspec ( dllimport ) void MyFunc02 ( ) ; # ifdef __ cplusplus } //koniec zátvorky pre " externé C " smernice # endif Ako alternatívu k určeniu smernici "Externé C " v záhlaví DLL , môžete zahrnúť súbor DLL hlavičku s " externou " C " " wrapper podmienečne , a to takto : # ifdef __ cplusplusExtern " C " { # endif # include " DLLPath \\ MyDLLFunctions.h " # ifdef __ cplusplus } //koniec zátvorky pre " externé C " smernice # endif
import funkcie DLL
Vývoz C funkcia pre použitie v C alebo C + + spustiteľné