Per fare una funzione , classe , elemento di dati o di una funzione membro della classe accessibile al programma di Windows chiamata , è necessario esportarlo prima . Una classe o una funzione possono essere esportati durante la sua definizione utilizzando il " __declspec ( dllexport ) " parola chiave prima del nome della funzione, una classe o una variabile , come segue :
Void __ declspec ( dllexport ) MyClass : CObjectName pubblica { ..... }
Nel file di intestazione DLL , ha messo questa parola chiave prima del nome della funzione in una dichiarazione di prototipo . Il " __declspec ( dllexport ) " parola chiave memorizza i nomi delle funzioni in tabella di esportazione della DLL. Per economizzare lo spazio che questa tabella occupa , usano i numeri ordinali invece di nomi di funzione .
Esportazione di Windows DLL oggetti tramite modulo di file di definizione
Come alternativa alla parola " __declspec ( dllexport ) , "creare un file di definizione del modulo in cui si afferma il nome della libreria , descrizione facoltativa ed elenca i nomi di funzioni, classi e variabili di dati nella DLL con valori ordinali opzionali . Il valore ordinale di una funzione varia da 1 a N , dove N è il numero di funzioni nella DLL . Il file di definizione del modulo ha l'estensione di seguito è riportato un esempio di un file di definizione del modulo , o un file DEF "DEF . ». : .
BIBLIOTECA ReportWriterDESCRIPTION Questa libreria dinamica contiene la funzionalità generatore di report di MyProduct.RPT_setup @ 1RPT_design @ @ 2RPT_run 3RPT_print @ 4
Se si crea una DLL MFC utilizzando creazione guidata applicazione di Visual Studio , la procedura guidata genera un file di scheletro. DEF per la DLL e aggiungerlo al progetto. Aggiungere le voci per le funzioni di DLL in questo file . DEF per esportarli . Il formato del prototipo di funzione utilizzata dal programma chiamante deve corrispondere al formato delle voci di funzione nel file . DEF . Utilizzare semplici definizioni in entrambi i luoghi , o compilatore specifico , generato dal compilatore definizioni di entrambi i luoghi costantemente .
Di importazione ed esportazione di estensione DLL
Microsoft Fondazione DLL classe di estensione consiste tipicamente di classi riutilizzabili derivate da tipi di classe MFC esistenti. Essi sono costruiti utilizzando una versione DLL di MFC , e possono essere richiamati dalle applicazioni e DLL costruite utilizzando questa versione condivisa di MFC . Per esportare le classi in DLL di estensione , utilizzare la macro " AFX_EXT_CLASS " prima del nome della classe in questo modo: Classe CMyViewClass AFX_EXT_CLASS : CView pubblico { //Corpo della classe }; Se si utilizza un file DEF , aggiungere il seguente codice macro all'inizio. e alla fine del file di intestazione DLL estesa : # undef AFX_DATA # define AFX_DATA AFX_EXT_DATA //
estesa # undef AFX_DATA # define AFX_DATA Queste direttive del preprocessore assicurarsi che le variabili MFC e derivazioni ed esportate dalla DLL estesa.
Importazione di funzioni di DLL
l'altro lato l'esportazione di oggetti da loro DLL è l'importazione in applicazioni che utilizzano il " __declspec (dllimport ) "La parola chiave .
Export C Funzioni per l'utilizzo in C + + o eseguibili
Se il programma chiamante o la funzione è scritto in C + + , utilizzare il C " extern C " direttiva del preprocessore nell'intestazione DLL se le funzioni di DLL sono scritti in C.
Programmazione © www.354353.com