Demonstra Passo a passo: 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). O uso de DLLs é uma ótima maneira de reutilizar o código. Rather than re-implementing the same routines in every program that you create, you write them one time and reference them from applications that need the functionality.

This walkthrough covers the following:

  • Criando um novo projeto de dynamic link library (DLL).

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

  • Criando um aplicativo que faz referência a biblioteca de vínculo dinâmico.

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

  • Executar o aplicativo.

Pré-requisitos

This topic assumes that you understand the fundamentals of the C++ language. Se apenas começar C++ de aprendizagem, recomendamos que o "guia para iniciantes do C++", escrito por Herb Schildt, disponível online em https://go.microsoft.com/fwlink/?LinkId=115303.

  1. Do arquivo menu, selecione nova e projeto ….

  2. Sobre o tipos de projeto painel, em Visual C++, selecione Win32.

  3. Sobre o modelos de painel, selecione Aplicativo de Console do Win32.

  4. Escolha um nome para o projeto, como, por exemplo, MathFuncsDll e digite-o nome campo. Escolha um nome para a solução, como, por exemplo, DynamicLibrary e digite-o Nome da solução campo.

  5. Clique em OK para iniciar o Assistente de aplicativo Win32. No Visão geral página da Assistente de aplicativo Win32 caixa de diálogo, clique em próximo.

  6. No As configurações do aplicativo página da Assistente de aplicativo Win32, em tipo de aplicativo, selecione DLL se estiver disponível ou aplicativo de Console se DLL não está disponível. Algumas versões do Visual Studio não suportam a criação de um projeto DLL utilizando assistentes. Você pode alterar isso posteriormente para fazer com que o seu projeto compilado em uma DLL.

  7. No As configurações do aplicativo página da Assistente de aplicativo Win32, em Opções adicionais, selecione projeto vazio.

  8. Clique em 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, a partir de projeto menu, selecione Adicionar novo item …. O Add New Item caixa de diálogo será exibida. Sobre o categorias painel, em Visual C++, selecione código. Sobre o modelos de painel, selecione O arquivo de cabeçalho (. h). Escolha um nome para o arquivo de cabeçalho, como, por exemplo, MathFuncsDll.h e clique em Add. Um arquivo em branco será exibido.

  2. Adicione uma classe simples denominada MyMathFuncs para fazer operações matemáticas comuns, como, por exemplo, 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. Observação o __declspec(dllexport) o modificador as declarações de método no código. Esses modificadores permitem que o método a ser exportada pela DLL para que possa ser usado por outros aplicativos. For more information, see dllexport, dllimport.

  4. Para criar um arquivo de origem para uma nova classe, a partir de projeto menu, selecione Adicionar novo item …. O Add New Item caixa de diálogo será exibida. Sobre o categorias painel, em Visual C++, selecione código. Sobre o modelos de painel, selecione Arquivo do C++ (CPP). Escolha um nome para o arquivo de origem, como, por exemplo, MathFuncsDll.cpp e clique em Add. Um arquivo em branco será exibido.

  5. Implemente a funcionalidade para MyMathFuncs no arquivo de origem. 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 construir o projeto em uma DLL a partir de projeto menu, selecione MathFuncsDll Properties…. No painel esquerdo, em Propriedades de configuração, selecione Geral. No painel à direita, altere o O tipo de configuração para Biblioteca dinâmica (. dll). Clique em OK para salvar as alterações.

    ObservaçãoObservação

    Se você estiver criando um projeto a partir da linha de comando, use o /LD opção de compilador para especificar que o arquivo de saída deve ser uma DLL. For more information, see /LD /MD, /MT, (biblioteca Run-Time uso).

  7. Compilar a biblioteca de vínculo dinâmico selecionando Build Solution da Build menu. Isso cria uma DLL que pode ser usada por outros programas. For more information about DLLs, see 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, selecione novo e projeto ….

  2. Sobre o tipos de projeto painel, em Visual C++, selecione Win32.

  3. Sobre o modelos de painel, selecione Aplicativo de Console do Win32.

  4. Escolha um nome para o projeto, como, por exemplo, MyExecRefsDll e digite-o nome campo. Ao lado de solução, selecione Adicionar a solução na lista suspensa. Isso adicionará o novo projeto para a mesma solução, como a biblioteca de vínculo dinâmico.

  5. Clique em OK para iniciar o Assistente de aplicativo Win32. No Visão geral página da Assistente de aplicativo Win32 caixa de diálogo, clique em próximo.

  6. No As configurações do aplicativo página do Assistente de aplicativo Win32, em tipo de aplicativo, selecione aplicativo de Console.

  7. No Configurações do aplicativo página da Assistente de aplicativo Win32, em Opções adicionais, limpar o cabeçalho pré-compilado caixa de seleção.

  8. Pressione Concluir para criar o projeto.

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

  1. Depois de criar um novo aplicativo de console, um programa vazio é criado para você. O nome do arquivo de origem é o mesmo 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, selecione o projeto de MyExecRefsDll no Solution Explorer e selecione References… partir do projeto menu. No Property Pages diálogo caixa, expanda o Propriedades comuns nó, selecione estrutura e referênciase selecione o Adicionar novo Reference… botão. Para obter mais informações sobre o References… caixa de diálogo, consulte Estrutura e referências, propriedades comuns, <Projectname> Caixa de diálogo de páginas de propriedade.

  3. The Add Reference dialog box is displayed. Esta caixa de diálogo lista todas as bibliotecas que você pode fazer referência. O projeto guia lista de todos os projetos na solução atual e todas as bibliotecas que eles contêm. Sobre o projetos , selecione MathFuncsDll. Em seguida, clique em OK.

  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, no Property Pages caixa de diálogo caixa, expanda o Propriedades de configuração nó, expandir o C/C++ nó e selecione Geral. Ao lado de Os diretórios adicionais incluem, digite o caminho do local do arquivo de cabeçalho MathFuncsDll.h.

  5. O executável não carregar bibliotecas de vínculo dinâmico até que 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, no Property Pages caixa de diálogo caixa, expanda o Propriedades de configuração nó e selecione depuração. Ao lado de ambiente, digite o seguinte: PATH=<caminho do MathFuncsDll.dll arquivo>, onde <caminho de MathFuncsDll.dll arquivo > é substituído com o local real do MathFuncsDll.dll. Clique em OK para salvar todas as alterações.

    ObservaçãoObservação

    Se você quiser executar o executável da linha de comando em vez da partir de Visual Studio, você deve atualizar manualmente o PATH a variável de ambiente do prompt de comando da seguinte maneira: set PATH=%PATH%;<caminho do MathFuncsDll.dll arquivo>, onde < caminho do MathFuncsDll.dll arquivo > é substituído com o local real do MathFuncsDll.dll.

  6. Agora você pode usar a classe MyMathFuncs neste aplicativo. Substitua o conteúdo de MyExecRefsDll.cpp com o seguinte código:

    // 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 Build Solution da Build menu.

To run the application

  1. Certifique-se de que myexecrefsdll está selecionado como o projeto padrão. No Solution Explorer, selecione MyExecRefsDll e, em seguida, selecione Como projeto de inicialização da projeto menu.

  2. Para executar o projeto, selecione Start Without Debugging partir do Debug menu. A saída deverá ser semelhante a isto:

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

Próximas etapas

Anterior: Criar códigos reutilizáveis (C++) | Próxima: Demonstra Passo a passo: Criando e usando uma biblioteca estática (C++)

Consulte também

Tarefas

Tour guiado do Visual C++

Demonstra Passo a passo: Implantando o seu programa (C++)

Conceitos

DLLs

Outros recursos

Metodologias de programação do Visual C++

Implantação (Visual C++)