Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Un programma che usa simboli pubblici definiti da una DLL viene detto di importarli. Quando si creano file di intestazione per le applicazioni che usano le DLL da compilare con, usare __declspec(dllimport)
nelle dichiarazioni dei simboli pubblici. La parola chiave __declspec(dllimport)
funziona sia se si esportano file con estensione def o con la __declspec(dllexport)
parola chiave .
Per rendere il codice più leggibile, definire una macro per __declspec(dllimport)
e quindi usare la macro per dichiarare ogni simbolo importato:
#define DllImport __declspec( dllimport )
DllImport int j;
DllImport void func();
L'uso __declspec(dllimport)
è facoltativo nelle dichiarazioni di funzione, ma il compilatore produce codice più efficiente se si usa questa parola chiave. Tuttavia, è necessario usare __declspec(dllimport)
per l'importazione dell'eseguibile per accedere ai simboli e agli oggetti dati pubblici della DLL. Si noti che gli utenti della DLL devono comunque collegarsi a una libreria di importazione.
È possibile usare lo stesso file di intestazione sia per la DLL che per l'applicazione client. A tale scopo, usare un simbolo speciale del preprocessore che indica se si compila la DLL o si compila l'applicazione client. Ad esempio:
#ifdef _EXPORTING
#define CLASS_DECLSPEC __declspec(dllexport)
#else
#define CLASS_DECLSPEC __declspec(dllimport)
#endif
class CLASS_DECLSPEC CExampleA : public CObject
{ ... class definition ... };