Importando e exportando
Você pode importar símbolos públicos para um aplicativo ou exportar funções de uma DLL usando dois métodos:
Usar um arquivo de definição (.def) de módulo ao criar a DLL
Usar as palavras-chave __declspec(DllImport) or __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) or __declspec(dllexport) exportar funções da DLL, a DLL requer um arquivo .def.
Você pode usar arquivos .def para Importar para um aplicativo or to Exportar de uma DLL.
Usando __declspec
Usa o Visual C++__declspec(DllImport) and __declspec(dllexport) para substituir o __export palavra-chave anteriormente usado nas versões de 16 bit do Visual C++.
Você não precisa usar __declspec(DllImport) para seu código seja compilado corretamente, mas isso permite que o compilador gerar um código melhor.O compilador é capaz de gerar um código melhor porque pode determinar se uma função existe em uma DLL ou não, que permite que o compilador a produzir código que ignora um nível de indireção que normalmente seriam presente em uma telefonar de função que ultrapassou um limite DLL.No entanto, você deve usar __declspec(DllImport) para importar variáveis usadas em uma DLL.
Com a seção de EXPORTS do arquivo .def adequado, __declspec(dllexport) não é necessária.__declspec(dllexport) foi adicionado para proporcionar uma maneira fácil de exportar funções de um arquivo .exe ou .dll sem usar um arquivo .def.
O formato de executável portátil do Win32 é 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 a tabela de endereços a importar.Isso permite que o carregador modificar apenas uma ou duas páginas ao acessar esses importações.