Importando e exportando
Você pode importar símbolos públicos para um aplicativo ou exportar as funções de uma DLL usando dois métodos:
Usar um arquivo de definição (. def) do módulo ao criar a DLL
Use as palavras-chave __declspec(dllimport) ou __declspec(dllexport) em uma definição de função no aplicativo principal
Usando um arquivo. def
Um arquivo de definição de módulo (. def) é um arquivo de texto que contém uma ou mais declarações do módulo que descrevem vários atributos de uma DLL. Se você não usar __declspec(dllimport) ou __declspec(dllexport) para exportar as funções de uma DLL, a DLL requer um arquivo. def.
Você pode usar arquivos. def Importar para um aplicativo ou Exportar de uma DLL.
Usando __declspec
Usos do Visual C++ __declspec(dllimport) e __declspec(dllexport) para substituir o __export palavra-chave anteriormente usado nas versões de 16 bits do Visual C++.
Você não precisará usar __declspec(dllimport) para o seu código compilar corretamente, mas isso permite que o compilador gere código melhor. O compilador é capaz de gerar códigos melhores, porque pode determinar se uma função existe em uma DLL ou não, o que permite que o compilador produzir um código que ignora um nível de indireção que normalmente seriam presente em uma chamada de função ultrapassou um limite DLL. No entanto, você deve usar __declspec(dllimport) para importar variáveis usadas em uma DLL.
Na seção de exportações do arquivo. def a adequada, __declspec(dllexport) não é necessária. __declspec(dllexport) foi adicionado para proporcionar uma maneira fácil de exportar funções a partir de um arquivo. exe ou. dll sem usar um arquivo. def.
O formato de arquivo executável portátil do Win32 foi projetado para minimizar o número de páginas que devem ser utilizadas para corrigir importações. Para fazer isso, ele coloca todos os endereços de importação para qualquer programa em um local chamado tabela de endereços ' Importar '. Isso permite que o carregador modificar apenas uma ou duas páginas ao acessar essas importações.