Compartilhar via


Criando e usando uma biblioteca de vínculo dinâmico (C++)

O primeiro tipo de biblioteca que criaremos é uma biblioteca de vínculo dinâmico (DLL).Uso de DLLs é uma ótima maneira de reutilizar o código.Em vez de reimplementação mesmas rotinas em todos os programas que você criar, você escreve uma vez e referenciá-los a partir de aplicativos que precisam da funcionalidade.

Esta explicação passo a passo aborda o seguinte:

  • Criando um novo projeto DLL (biblioteca) vínculo dinâmico.

  • Adicionando uma classe a biblioteca de vínculo dinâmico.

  • Criação de um aplicativo que faz referência à biblioteca de vínculo dinâmico.

  • Usando a funcionalidade da biblioteca de classes no aplicativo de console.

  • Executar o aplicativo.

Pré-requisitos

Este tópico pressupõe que você entenda os fundamentos da linguagem C++.Se apenas começar aprendendo C++, recomendamos que o "Guia de C++ iniciantes", escrito por Herb Schildt, disponível online emhttps://go.Microsoft.com/fwlink/?LinkId=115303.

Para criar um novo projeto DLL (biblioteca) vínculo dinâmico

  1. From a Arquivo menu, selecionar Novo and then Projeto ….

  2. Sobre o Tipos de projeto painel, em O Visual C++, selecionar Win32.

  3. Sobre o Modelos painel, selecionar Aplicativo do Console Win32.

  4. escolher um nome para o projeto such sistema autônomo MathFuncsDll e digite-o no Nome campo.escolher um nome para a solução, sistema autônomo DynamicLibrary e digite-o no Nome da solução campo.

  5. clicar OK para iniciar o Win32 aplicativo assistente.Sobre o Visão geral página de do Win32 aplicativo Assistente diálogo, clicar Próximo.

  6. Sobre o Configurações do aplicativo página de do Assistente de aplicativos Win32, under Tipo de aplicativo, selecionar DLL se ele estiver disponível ou Aplicativo de console if DLL não está disponível.Algumas versões do Visual Studio não oferecem suporte para a criação de um projeto DLL usando assistentes.Você pode alterar isso posteriormente para tornar seu projeto compilar em uma DLL.

  7. Sobre o Configurações do aplicativo página de do Assistente de aplicativos Win32, under Opções adicionais, selecionar Projeto vazio.

  8. clicar Concluir para criar o projeto.

Para adicionar uma classe para a biblioteca de vínculo dinâmico

  1. Para criar um arquivo de cabeçalho para uma nova classe do Projeto menu, selecionar Adicionar novo item ….The Adicionar novo item caixa de diálogo será exibida.Sobre o Categorias painel, em O Visual C++, selecionar Código.Sobre o Modelos painel, selecionar Arquivo de cabeçalho (. h).escolher um nome para o arquivo de cabeçalho, sistema autônomo MathFuncsDll.h e clicar Adicionar.Um arquivo em branco será exibido.

  2. Adicione uma classe simples denominada MyMathFuncs fazer operações matemáticas comuns, tais sistema autônomo adição, subtração, multiplicação e divisão.O código deve ser semelhante ao seguinte:

    // MathFuncsDll.h
    
    namespace MathFuncs
    {
        class MyMathFuncs
        {
        public:
            // Returns a + b
            static __declspec(dllexport) double Add(double a, double b);
    
            // Returns a - b
            static __declspec(dllexport) double Subtract(double a, double b);
    
            // Returns a * b
            static __declspec(dllexport) double Multiply(double a, double b);
    
            // Returns a / b
            // Throws DivideByZeroException if b is 0
            static __declspec(dllexport) double Divide(double a, double b);
        };
    }
    
  3. Observe o __declspec(dllexport) modificador nas declarações de método nesse código. Esses modificadores permitem o método a ser exportada pela DLL para que possa ser usado por outros aplicativos.Para obter mais informações, consulte dllexport, DllImport.

  4. Para criar um arquivo de fonte para uma nova classe do Projeto menu, selecionar Adicionar novo item ….The Adicionar novo item caixa de diálogo será exibida.Sobre o Categorias painel, em O Visual C++, selecionar Código.Sobre o Modelos painel, selecionar Arquivo do C++ (CPP).escolher um nome para o arquivo de fonte, tais sistema autônomo MathFuncsDll.cpp e clicar Adicionar.Um arquivo em branco será exibido.

  5. Implementar a funcionalidade para MyMathFuncs no arquivo de fonte.O código deve ser semelhante ao seguinte:

    // MathFuncsDll.cpp
    // compile with: /EHsc /LD
    
    #include "MathFuncsDll.h"
    
    #include <stdexcept>
    
    using namespace std;
    
    namespace MathFuncs
    {
        double MyMathFuncs::Add(double a, double b)
        {
            return a + b;
        }
    
        double MyMathFuncs::Subtract(double a, double b)
        {
            return a - b;
        }
    
        double MyMathFuncs::Multiply(double a, double b)
        {
            return a * b;
        }
    
        double MyMathFuncs::Divide(double a, double b)
        {
            if (b == 0)
            {
                throw new invalid_argument("b cannot be zero!");
            }
    
            return a / b;
        }
    }
    
  6. Para criar o projeto em uma DLL do Projeto menu, selecionar MathFuncsDll Properties….No painel esquerdo, em Propriedades de configuração, selecionar Geral.No painel à direita, altere o Tipo de configuração to Biblioteca dinâmica (.dll).clicar OK para salvar as alterações.

    Observação:

    Se Você está criação de um projeto a partir da linha de comando, use o /LD opção do compilador para especificar que o arquivo de saída deve ser uma DLL. Para obter mais informações, consulte /LD /MD, /MT, (biblioteca Run-Time uso).

  7. Compilar a biblioteca de vínculo dinâmico selecionando Criar solução from the Compilação menu.Isso cria uma DLL que pode ser usada por outros programas.Para obter mais informações sobre DLLs, consulte DLLs.

Para criar um aplicativo que faz referência a biblioteca de vínculo dinâmico

  1. Para criar um aplicativo que irá referenciar e usar a biblioteca de vínculo dinâmico que você acabou de criar, da Arquivo menu, selecionar Novo and then Projeto ….

  2. Sobre o Tipos de projeto painel, em O Visual C++, selecionar Win32.

  3. Sobre o Modelos painel, selecionar Aplicativo do Console Win32.

  4. Selecione um nome para o projeto such sistema autônomo MyExecRefsDll e digite-o no Nome campo.Próximo a Solução, selecionar Adicionar à solução na lista suspensa.Isso adicionará o novo projeto à solução mesma sistema autônomo a biblioteca de vínculo dinâmico.

  5. clicar OK para iniciar o Assistente de aplicativos Win32.Sobre o Visão geral página de do Win32 aplicativo Assistente diálogo, clicar Próximo.

  6. Sobre o Configurações do aplicativo página de do Assistente de aplicativos Win32, under Tipo de aplicativo, selecionar Aplicativo de console.

  7. Sobre o Configurações do aplicativo página de do Assistente de aplicativos Win32, under Opções adicionais, desmarcar o Cabeçalho pré-compilado a caixa de seleção.

  8. Pressione Concluir para criar o projeto.

Para usar a funcionalidade da biblioteca de classes no aplicativo de console

  1. Depois de criar um novo aplicativo de console, um programa vazio é criado para você.O nome do arquivo de fonte é o mesmo sistema autônomo o nome que você escolheu anteriormente para o projeto.Neste exemplo, ele é denominado MyExecRefsDll.cpp.

  2. Para usar as rotinas de matemática que foram criadas na biblioteca de vínculo dinâmico, você deve fazer referência a biblioteca.Para fazer isso, selecionar References… from the Projeto menu.Sobre o Páginas de propriedades caixa de diálogo, expandir o Propriedades comuns nó, selecionar Referênciase, em seguida, selecionar o Adicionar novo Reference… botão.Para obter mais informações sobre o References… caixa de diálogo, consulte Estrutura e referências, ComComummon Properties, < ProjectName > Caixa de diálogo de páginas de propriedade.

  3. A caixa de diálogo Add Reference é exibida.Esta caixa de diálogo lista todas as bibliotecas que você possa fazer referência.The Projeto guia lista todos os projetos na solução corrente e todas as bibliotecas que eles contêm.Sobre o Projetos guia, selecionar MathFuncsDll.Em seguida, clicar OK.Para obter mais informações sobre o Adicionar referência caixa de diálogo, consulte Caixa de diálogo Add Reference.

  4. Para fazer referência os arquivos de cabeçalho da biblioteca de vínculo dinâmico, você deve modificar o caminho de diretórios de inclusão.Para fazer isso, sobre o Páginas de propriedades caixa de diálogo, expandir o Propriedades de configuração nó, expandir o C/C++ nó e, em seguida, selecionar Geral.Próximo a Outros diretórios de inclusão, digite o caminho para o local do arquivo de cabeçalho MathFuncsDll.h.

  5. O executável não carrega bibliotecas de vínculo dinâmico até o tempo de execução.Você deve informar ao sistema onde localizar MathFuncsDll.dll.Fazer isso usando o PATH variável de ambiente. Para fazer isso, sobre o Páginas de propriedades diálogo caixa, expandir o Propriedades de configuração nó e selecionar Depuração.Próximo a Ambiente, digite o seguinte: PATH=<caminho do MathFuncsDll.dll arquivo>, onde <caminho do MathFuncsDll.dllarquivo > é substituída pela localização real dos MathFuncsDll.dll.clicar OK para salvar todas as alterações.

    Observação:

    Se você deseja para executar o arquivo .exe a partir da linha de comando em vez de no Visual Studio, você deve atualizar manualmente o PATH variável de ambiente do comando aviso da seguinte maneira: set PATH=%PATH%;<caminho do MathFuncsDll.dll arquivo>, onde < caminho do MathFuncsDll.dllarquivo > é substituída pela localização real dos MathFuncsDll.dll.

  6. Agora você pode usar a classe MyMathFuncs neste aplicativo.Substitua o Sumário de MyExecRefsDll.cpp com o código a seguir:

    // MyExecRefsDll.cpp
    // compile with: /EHsc /link MathFuncsDll.lib
    
    #include <iostream>
    
    #include "MathFuncsDll.h"
    
    using namespace std;
    
    int main()
    {
        double a = 7.4;
        int b = 99;
    
        cout << "a + b = " <<
            MathFuncs::MyMathFuncs::Add(a, b) << endl;
        cout << "a - b = " <<
            MathFuncs::MyMathFuncs::Subtract(a, b) << endl;
        cout << "a * b = " <<
            MathFuncs::MyMathFuncs::Multiply(a, b) << endl;
        cout << "a / b = " <<
            MathFuncs::MyMathFuncs::Divide(a, b) << endl;
    
        return 0;
    }
    
  7. Crie o arquivo executável, selecionando Criar solução from the Compilação menu.

Para executar o aplicativo

  1. Verifique se a opção que MyExecRefsDll é selecionada sistema autônomo o projeto padrão.No O gerenciador de soluções, selecionar MyExecRefsDll e, em seguida, selecionar conjunto sistema autônomo inicialização Project from the Projeto menu.

  2. Para executar o projeto, selecionar Iniciar sem depuração from the Depurar menu.A saída deverá ser semelhante a esta:

    a + b = 106.4
    a - b = -91.6
    a * b = 732.6
    a / b = 0.0747475
    

Próximas etapas

Anterior:Criando código reutilizável (C++) | Próxima:Criando e usando uma biblioteca estático (C++)

Consulte também

Tarefas

Tour guiado do Visual C++

Implantando o programa (C++)

Conceitos

DLLs

Outros recursos

Metodologias de programação ComComumComum

Implantação (C++)