Importare in un'applicazione tramite __declspec(dllimport)
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 ... };