Compartilhar via


Importação e exportação

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

  • Use 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 contendo uma ou mais instruções módulo que descrevem vários atributos de uma DLL.Se você não usar __declspec(dllimport) ou __declspec(dllexport) para exportar funções da DLL, a DLL requer um arquivo. def.

Você pode usar arquivos. def para Importar para um aplicativo ou Exportar de uma DLL.

Usando __declspec

Visual C++ usa __declspec(dllimport) e __declspec(dllexport) para substituir o __export palavra-chave usada anteriormente 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ódigo melhor porque ele pode determinar se uma função existe em uma DLL ou não, que permite que o compilador produzir código que ignora um nível de indireção que normalmente seriam presente em uma chamada de função que 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 adequada, __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 arquivo executável portátil do Win32 é projetado para minimizar o número de páginas que deve ser tocado 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.

O que você deseja fazer?

Consulte também

Conceitos

DLLs no Visual C++