Partilhar via


Importação de dados usando __declspec(dllimport)

No caso de dados, usando __declspec(DllImport) é um item de conveniência que remove uma camada de indireção.Quando você importa dados de uma DLL, você ainda precisa percorrer a tabela de importação de endereços.Antes de __declspec(DllImport), isso significava que era necessário Lembre-se de fazer um nível extra de indireção quando acessar dados exportado 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

Em seguida, você poderia exportar os dados em seu arquivo .def:

// project.def
LIBRARY project
EXPORTS
   ulDataInDll   CONSTANT

e acessá-lo fora a DLL:

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

Quando você marca sistema autônomo dados sistema autônomo __declspec(DllImport), o compilador gera automaticamente o código de indireção para você.Você não precisa se preocupar sobre as etapas acima.Conforme mencionado anteriormente, não use __declspec(DllImport) declaração nos dados ao criar a DLL.Funções dentro da DLL não use a tabela de importação de endereços para acessar o objeto de dados; portanto, você não terá o nível extra de indireção presente.

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

__declspec(dllexport) ULONG ulDataInDLL;

Consulte também

Conceitos

Importar para um aplicativo