Importazione ed esportazione
È possibile importare simboli pubblici in un'applicazione o esportare funzioni da una DLL mediante i due metodi elencati di seguito.
Utilizzare un file di definizione di modulo (def) quando si compila la DLL.
Utilizzare le parole chiave __declspec(dllimport) o __declspec(dllexport) in una definizione di funzione nell'applicazione principale.
Utilizzo di un file def
Un file di definizione di modulo (def) è un file di testo contenente una o più istruzioni di modulo che descrivono alcuni attributi di una DLL.Se non si utilizzano le parole chiave __declspec(dllimport) o __declspec(dllexport) per esportare le funzioni di una DLL, è necessario utilizzare un file def.
È possibile utilizzare i file def per l'importazione in un'applicazione o l'esportazione da una DLL.
Utilizzo di __declspec
Visual C++ utilizza __declspec(dllimport) e __declspec(dllexport) per sostituire la parola chiave __export utilizzata in precedenza nelle versioni a 16 bit di Visual C++.
L'utilizzo di __declspec(dllimport) non è richiesto per la compilazione corretta del codice, ma consente al compilatore di generare codice più efficiente.Il compilatore, infatti, può determinare se una funzione è presente o meno in una DLL e può quindi produrre un codice che evita un livello di riferimento indiretto normalmente presente in una chiamata di funzione che attraversa un limite di DLL.È tuttavia necessario utilizzare __declspec(dllimport) per importare le variabili utilizzate in una DLL.
Con la sezione EXPORTS del file def appropriato, la parola chiave __declspec(dllexport) non è necessaria.__declspec(dllexport) è stata aggiunta per semplificare l'esportazione delle funzioni da un file exe o dll senza l'utilizzo di un file def.
Il formato eseguibile portabile Win32 consente di ridurre al minimo il numero di pagine da modificare per correggere i problemi di importazione.A questo scopo, tutti gli indirizzi di importazione di un qualsiasi programma vengono inseriti in un'unica posizione, denominata tabella di indirizzi di importazione.Il caricatore può pertanto modificare solo una o due pagine quando accede a queste importazioni.