Definizioni e dichiarazioni (C)

Specifico di Microsoft

L'interfaccia DLL fa riferimento a tutti gli elementi (funzioni e dati) che sono noti per essere esportati da alcuni programmi nel sistema; ovvero tutti gli elementi dichiarati come dllimport o dllexport. Tutte le dichiarazioni incluse nell'interfaccia DLL devono specificare l'attributo dllimport o dllexport . Tuttavia, la definizione può specificare solo l'attributo dllexport. Ad esempio, la definizione di funzione seguente genera un errore del compilatore:

#define DllImport   __declspec( dllimport )
#define DllExport   __declspec( dllexport )

DllImport int func()    /* Error; dllimport prohibited in */
                        /* definition. */
{
   return 1;
}

Anche questo codice genera un errore:

#define DllImport   __declspec( dllimport )
#define DllExport   __declspec( dllexport )

DllImport int i = 10;      /* Error; this is a definition. */

Tuttavia, questa è la sintassi corretta:

#define DllImport   __declspec( dllimport )
#define DllExport   __declspec( dllexport )

DllExport int i = 10;      /* Okay: this is an export definition. */

L'uso di dllexport implica una definizione, mentre dllimport implica una dichiarazione. È necessario utilizzare la parola chiave extern con dllexport per forzare una dichiarazione; in caso contrario, una definizione è implicita.

#define DllImport   __declspec( dllimport )
#define DllExport   __declspec( dllexport )

extern DllImport int k;   /* These are correct and imply */
Dllimport int j;          /* a declaration. */

END Microsoft Specific

Vedi anche

Funzioni di importazione ed esportazione DLL