Demonstra Passo a passo: Criando e usando um Assembly gerenciado (C++)

Um assembly gerenciado é um tipo de biblioteca que você pode criar a reutilização de código com eficiência. Em vez de reimplementação da mesmas rotinas em muitos programas, você pode gravá-los uma vez e referência-los a partir de aplicativos que exigem a funcionalidade.

Esta explicação passo a passo abrange as seguintes tarefas:

  • Criando um projeto de biblioteca de classe.

  • Adicionando uma classe para a biblioteca de classes.

  • Criando um aplicativo que faz referência a biblioteca de classes.

  • Usando a funcionalidade da biblioteca de classe no aplicativo.

  • Executar o aplicativo.

Pré-requisitos

To complete this walkthrough, you must understand the fundamentals of the C++ language. Se apenas começar C++ de aprendizagem, recomendamos que o "guia para iniciantes do C++" por Herb Schildt, que está disponível no Central de desenvolvedores iniciantes no site do MSDN.

Para criar um projeto de biblioteca de classe

  1. On the File menu, point to New and then click Project.

  2. No tipos de projeto painel, em Visual C++, selecione CLR.

    Cada tipo de projeto neste grupo cria um projeto que atinge o common language runtime (CLR).

  3. No modelos de painel, selecione Biblioteca de classe.

  4. No nome , digite um nome para o projeto, por exemplo, MathFuncsAssembly. No Nome da solução , digite um nome para a solução, por exemplo, ManagedAssemblies.

  5. Click OK to create the project.

  6. Por padrão, quando um projeto é criado, ele é configurado para usar um cabeçalho pré-compilado. Para desativar o cabeçalho pré-compilado para o projeto de MathFuncsAssembly na Solution Explorer, selecione o projeto e, em seguida, na projeto menu, clique em Propriedades. Expanda o Propriedades de configuração nó, expanda o C/C++ nó e selecione Cabeçalhos pré-compilados. Na lista ao lado de Create/Use Precompiled Header, selecione Não usando Precompiled Header. Clique em OK para salvar essas alterações. For more information, see Criando arquivos de cabeçalho pré-compilado.

Para adicionar uma classe para a biblioteca de classes

  1. Depois de criar uma biblioteca de classes do CLR, o assistente gera uma classe básica para você. O arquivo de cabeçalho gerado e o arquivo de origem têm o mesmo nome, como aquele que deu o projeto ao criá-lo. Neste exemplo, eles são chamados MathFuncsAssembly.h e MathFuncsAssembly.cpp.

  2. Substitua o código existente no MathFuncsAssembly.h, usando uma classe básica chamada MyMathFuncsAssembly. Essa classe executa operações matemáticas comuns, como adição, subtração, multiplicação e divisão. O código deve se parecer com o exemplo a seguir.

    // MathFuncsAssembly.h
    
    using namespace System;
    
    namespace MathFuncs
    {
        public ref class MyMathFuncs
        {
        public:
            // Returns a + b
            static double Add(double a, double b);
    
            // Returns a - b
            static double Subtract(double a, double b);
    
            // Returns a * b
            static double Multiply(double a, double b);
    
            // Returns a / b
            // Throws DivideByZeroException if b is 0
            static double Divide(double a, double b);
        };
    }
    
  3. Implementar a funcionalidade de MyMathFuncs no arquivo de origem. O código deve se parecer com o exemplo a seguir.

    // MathFuncsAssembly.cpp
    // compile with: /clr /LD
    
    #include "MathFuncsAssembly.h"
    
    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 gcnew DivideByZeroException("b cannot be zero!");
            }
    
            return a / b;
        }
    }
    
  4. Compilar a biblioteca de classe clicando em Build Solution sobre o Build menu. Isso cria uma biblioteca de vínculo dinâmico (DLL) que pode ser usada por outros programas. For more information about DLLs, see DLLs.

Para criar um aplicativo de console que faz referência a biblioteca de classes

  1. On the File menu, point to New and then click Project.

  2. No tipos de projeto painel, em Visual C++, selecione CLR.

  3. No modelos de painel, selecione Aplicativo de Console CLR.

  4. No nome , digite um nome para o projeto, por exemplo, MyExecRefsAssembly. Na lista ao lado de solução, selecione Adicionar a solução para adicionar o novo projeto à solução que contém a biblioteca de classe.

  5. Click OK to create the project.

  6. Desativar o cabeçalho pré-compilado para o projeto MyExecRefsAssembly, selecionando-o em Solution Explorer e, em seguida, na projeto menu, clique em Propriedades. Expanda o Propriedades de configuração nó, expanda o C/C++ nó e selecione Cabeçalhos pré-compilados. Na lista ao lado de Create/Use Precompiled Header, selecione Não usando Precompiled Header. Clique em OK para salvar essas alterações.

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

  1. Depois de criar um aplicativo de Console CLR, o assistente gera um programa que apenas grava "Hello World" no console. O arquivo de código-fonte gerado tem o mesmo nome, como aquele que deu o projeto ao criá-lo. Neste exemplo, ele é denominado MyExecRefsAssembly.cpp.

  2. Para usar as rotinas de matemática que foram criadas na biblioteca de classes, você deve referenciá-los. Para fazer isso, selecione o projeto de MyExecRefsAssembly em Solution Explorer e, em seguida, o projeto menu, clique em Propriedades. No Property Pages caixa de diálogo caixa, expanda o Propriedades comuns nó, selecione estrutura e referênciase, em seguida, clique em Adicionar nova referência. For more information, see Estrutura e referências, propriedades comuns, <Projectname> Caixa de diálogo de páginas de propriedade.

  3. O Add Reference caixa de diálogo lista todas as bibliotecas que você pode fazer referência. The .NET guia lista as bibliotecas que estão incluídas com o.NET Framework. O COM guia lista de todos os componentes COM em seu computador. O projeto guia lista de todos os projetos na solução atual e todas as bibliotecas que eles contêm. Sobre o projetos guia, selecione MathFuncsAssembly e, em seguida, clique em OK.

    ObservaçãoObservação

    Você pode referenciar um assembly diretamente do arquivo de origem, incluindo o #using a diretiva, por exemplo, #using <MathFuncsAssembly.dll>. For more information, see The #using Directive.

  4. Agora você pode usar o MyMathFuncs classe no aplicativo. No MyExecRefsAssembly.cpp, substitua o conteúdo da função de arquivo usando o código a seguir.

    // MyExecRefsAssembly.cpp
    // compile with: /clr /FUMathFuncsAssembly.dll
    
    using namespace System;
    
    int main(array<System::String ^> ^args)
    {
        double a = 7.4;
        int b = 99;
    
        Console::WriteLine("a + b = {0}",
            MathFuncs::MyMathFuncs::Add(a, b));
        Console::WriteLine("a - b = {0}",
            MathFuncs::MyMathFuncs::Subtract(a, b));
        Console::WriteLine("a * b = {0}",
            MathFuncs::MyMathFuncs::Multiply(a, b));
        Console::WriteLine("a / b = {0}",
            MathFuncs::MyMathFuncs::Divide(a, b));
    
        return 0;
    }
    
  5. Criar o executável clicando em Build Solution sobre o Construir menu.

To run the application

  1. Certifique-se de que o MyExecRefsAssembly está selecionado como o projeto padrão selecionando MyExecRefsAssembly na Solution Explorere, em seguida, clicando em Como projeto de inicialização sobre o projeto menu.

  2. Para executar o projeto na Debug menu, clique em Start Without Debugging. A saída deve se parecer com o exemplo a seguir.

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

Próximas etapas

Anterior: Demonstra Passo a passo: Criando e usando uma biblioteca estática (C++). Próxima: O que fazer Avançar (C++).

Consulte também

Tarefas

Tour guiado do Visual C++