Compartilhar via


Importando dados usando __declspec(dllimport)

No caso de dados, use __declspec(dllimport) é um item de conveniência que remove uma camada de nomes indiretos. Quando você importa dados de uma DLL, você ainda precisa examinar a tabela de endereço de importação. Antes de __declspec(dllimport), isso significa que ele tinha lembre-se de fazer um nível de nomes indiretos adicional para acessar dados exportou da DLL:

// project.h
#ifdef _DLL   // If accessing the data from inside the DLL
   ULONG ulDataInDll;

#else         // If accessing the data from outside the DLL
   ULONG *ulDataInDll;
#endif

Você exportaria os dados em seu arquivo de .DEF:

// project.def
LIBRARY project
EXPORTS
   ulDataInDll   CONSTANT

e acessá-lo fora da DLL:

if (*ulDataInDll == 0L) 
{
   // Do stuff here
}

Quando você marca os dados como __declspec(dllimport), o compilador gerencia automaticamente o código de nomes indiretos para você. Você não precisa se preocupar sobre as etapas acima. Como mencionado anteriormente, não use a instrução de __declspec(dllimport) nos dados durante a criação da DLL. As funções dentro da DLL não utilizam a tabela de endereço de importação para acessar o objeto de dados; consequentemente, você não terá o nível adicional de presentes de nomes indiretos.

Para exportar os dados automaticamente da DLL, use essa instrução:

__declspec(dllexport) ULONG ulDataInDLL;

Consulte também

Conceitos

Importando para um aplicativo