Compartilhar via


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.

O que você deseja fazer?

Consulte também

Conceitos

DLLs no Visual C++