Importando e exportando
Você pode importar símbolos públicos em um aplicativo ou exportar funções de uma DLL usando dois métodos:
Use um arquivo de definição de módulo (.def) durante a criação do DLL
Use as palavras-chave __declspec(dllimport) ou __declspec(dllexport) em uma definição de função no aplicativo principal
Usando um arquivo .def
Arquivo de definição de módulo (.def) é um arquivo de texto que contém uma ou mais instruções de 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 da importação em um aplicativo ou a exportação de uma DLL.
Usando __declspec
Usa __declspec(dllimport) e __declspec(dllexport) do Visual C++ substituir a palavra-chave de __export usado anteriormente em versões de 16 bits do Visual C++.
Você não precisa usar __declspec(dllimport) para seu código para criar corretamente, mas essa forma que o compilador gerencia o melhor código. O compilador pode produzir a melhor código porque pode determinar se uma função existir em uma DLL ou não, que permite que o compilador gerencia o código que salta um nível de nomes indiretos que normalmente estão presentes em uma chamada de função que atravessa um limite da DLL. Porém, você deve usar __declspec(dllimport) para importar as variáveis usadas em uma DLL.
Com a seção EXPORTS adequada do arquivo .def, __declspec(dllexport) não é necessário. __declspec(dllexport) foi adicionado para fornecer uma maneira fácil exportar funções de um arquivo ou arquivo .dll sem usar um arquivo .def.
O formato portátil executável Win32 é criado para minimizar o número de páginas que devem ser tocadas para corrigir importações. Para fazer isso, coloque todos os endereços de importação para qualquer programa em um local chamada a tabela de endereço de importação. Isso permite que o carregador modificar somente uma ou duas páginas ao acessar essas importações.