Importação para um aplicativo usando __declspec(dllimport)
A um programa que usa símbolos públicos definidos por uma DLL, dizemos que ele os importa. Ao criar arquivos de cabeçalho para aplicativos que usam suas DLLs para compilar, use __declspec(dllimport)
nas declarações dos símbolos públicos. A palavra-chave __declspec(dllimport)
funciona se você exporta com arquivos .def ou com a palavra-chave __declspec(dllexport)
.
Para tornar seu código mais legível, defina uma macro para __declspec(dllimport)
e use a macro para declarar cada símbolo importado:
#define DllImport __declspec( dllimport )
DllImport int j;
DllImport void func();
O uso de __declspec(dllimport)
é opcional em declarações de função, mas o compilador produzirá um código mais eficiente se você usar essa palavra-chave. No entanto, você deve usar __declspec(dllimport)
para que o executável de importação acesse os símbolos e objetos de dados públicos da DLL. Observe que os usuários da DLL ainda precisam vincular a uma biblioteca de importação.
Você pode usar o mesmo arquivo de cabeçalho para a DLL e o aplicativo cliente. Para fazer isso, use um símbolo especial de pré-processador que indica se você está criando a DLL ou o aplicativo cliente. Por exemplo:
#ifdef _EXPORTING
#define CLASS_DECLSPEC __declspec(dllexport)
#else
#define CLASS_DECLSPEC __declspec(dllimport)
#endif
class CLASS_DECLSPEC CExampleA : public CObject
{ ... class definition ... };