Importazione in un'applicazione tramite __declspec(dllimport)
Aggiornamento: novembre 2007
Un programma che utilizza i simboli pubblici definiti da una DLL, per definizione li importa. Quando si creano i file di intestazione per applicazioni che utilizzano le DLL in fase di generazione, utilizzare __declspec(dllimport) nelle dichiarazioni dei simboli pubblici. La parola chiave __declspec(dllimport) funziona sia quando si esegue l'esportazione con i file def che quando si utilizza la parola chiave __declspec(dllexport).
Per rendere il codice più leggibile, definire una macro per __declspec(dllimport), quindi utilizzarla per dichiarare ciascun simbolo importato:
#define DllImport __declspec( dllimport )
DllImport int j;
DllImport void func();
L'utilizzo di __declspec(dllimport) è facoltativo nelle dichiarazioni di funzioni, ma consente al compilatore di produrre un codice più efficiente. È tuttavia necessario utilizzare __declspec(dllimport) per consentire all'eseguibile di importazione di accedere agli oggetti e ai simboli di dati pubblici della DLL. Tenere presente che gli utenti della DLL devono collegarsi a una libreria di importazione.
È possibile utilizzare lo stesso file di intestazione per la DLL e per l'applicazione client. A questo scopo, utilizzare uno speciale simbolo del preprocessore che indica se è in corso la generazione della DLL o dell'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 ... };