Crear y utilizar un ensamblado administrado (C++)

Actualización: noviembre 2007

El siguiente tipo de biblioteca que crearemos es un ensamblado administrado. El uso de ensamblados administrados es una buena manera de reutilizar el código. En lugar de volver a implementar las mismas rutinas en todos los programas que cree, escríbalas una vez y haga referencia a ellas desde las aplicaciones que necesiten esa funcionalidad.

En este tutorial se trata lo siguiente:

  • Crear un nuevo proyecto de biblioteca de clases.

  • Agregar una clase a la biblioteca de clases.

  • Crear una aplicación que haga referencia a la biblioteca de clases.

  • Utilizar la funcionalidad de la biblioteca de clases en la aplicación de consola.

  • Ejecutar la aplicación.

Requisitos previos

En este tema se da por supuesto que conoce los fundamentos del lenguaje C++. Si está empezando a aprender C++, le recomendamos el libro "C++ Beginner's Guide" escrito por Herb Schildt, disponible en línea en https://go.microsoft.com/fwlink/?LinkId=115303.

Para crear un nuevo proyecto de biblioteca de clases

  1. En el menú Archivo, haga clic en Nuevo y, a continuación, seleccione Proyecto….

  2. En el panel Tipos de proyecto, bajo Visual C++, seleccione CLR. Esto crea un proyecto destinado a Common Language Runtime.

  3. En el panel Plantillas, seleccione Biblioteca de clases.

  4. Elija un nombre para el proyecto, como MathFuncsAssembly, y escríbalo en el campo Nombre. Elija un nombre para la solución, como ManagedAssemblies, y escríbalo en el campo Nombre de la solución.

  5. Haga clic en Aceptar para crear el proyecto.

  6. De forma predeterminada, cuando se crean nuevos proyectos, están configurados para utilizar encabezados precompilados. Para deshabilitar el encabezado precompilado, seleccione Propiedades en el menú Proyecto. Expanda el nodo Propiedades de configuración, expanda el nodo C/C++ y, a continuación, seleccione Encabezados precompilados. En la lista desplegable al lado de Crear o utilizar encabezado precompilado, seleccione No utilizar encabezados precompilados. Haga clic en Aceptar para guardar estos cambios. Para obtener más información acerca de los encabezados precompilados, vea Crear archivos de encabezado precompilados.

Para agregar una clase a la biblioteca de clases

  1. Después de crear una nueva biblioteca de clases CLR, el asistente genera una clase sencilla. Los nombres para el archivo de encabezado y el archivo de código fuente serán iguales que el nombre elegido para el proyecto anterior. En este ejemplo, se denominan MathFuncsAssembly.h y MathFuncsAssembly.cpp.

  2. Reemplace el código existente en MathFuncsAssembly.h por una clase sencilla llamada MyMathFuncsAssembly para realizar operaciones matemáticas comunes, como suma, resta, multiplicación y división. El código debe tener una apariencia similar a la siguiente:

    // 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. Implemente la funcionalidad para MyMathFuncs en el archivo de código fuente. El código debe tener una apariencia similar a la siguiente:

    // 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. Compile la biblioteca de clases seleccionando Generar solución en el menú Generar. Esto crea una biblioteca de vínculos dinámicos (DLL) que puede ser utilizada por otros programas. Para obtener más información sobre archivos DLL, consulte Archivos DLL.

Para crear una aplicación que haga referencia a la biblioteca de clases

  1. Para crear una aplicación que haga referencia y utilice la biblioteca de clases que acaba de crear, en el menú Archivo, seleccione Nuevo y luego Proyecto….

  2. En el panel Tipos de proyecto, bajo Visual C++, seleccione CLR. Esto crea un proyecto orientado a Common Language Runtime.

  3. En el panel Plantillas, seleccione Aplicación de consola CLR.

  4. Elija un nombre para el proyecto, como MyExecRefsAssembly, y escríbalo en el campo Nombre. Junto a Solución, seleccione Agregar a solución en la lista desplegable. Esto agregará el nuevo proyecto a la misma solución que la biblioteca de clases.

  5. Haga clic en Aceptar para crear el proyecto.

  6. De forma predeterminada, cuando se crean nuevos proyectos, están configurados para utilizar encabezados precompilados. Para deshabilitar el encabezado precompilado, seleccione Propiedades en el menú Proyecto. Expanda el nodo Propiedades de configuración, expanda el nodo C/C++ y, a continuación, seleccione Encabezados precompilados. En la lista desplegable junto a Crear o utilizar encabezado precompilado, seleccione No utilizar encabezados precompilados. Haga clic en Aceptar para guardar estos cambios. Para obtener más información acerca de los encabezados precompilados, vea Crear archivos de encabezado precompilados.

Para utilizar la funcionalidad de la biblioteca de clases en la aplicación de consola

  1. Después de crear una nueva aplicación de consola CLR, se crea un programa que escribe simplemente "Hola a todos" en la consola. El nombre del archivo de código fuente será el mismo que el elegido para el proyecto anterior. En este ejemplo, se llama MyExecRefsAssembly.cpp.

  2. Para utilizar las rutinas matemáticas que se crearon en la biblioteca de clases, debe hacer referencia a ella. Para ello, seleccione Referencias... en el menú Proyecto. En el cuadro de diálogo Páginas de propiedades, expanda el nodo Propiedades comunes, seleccione Referencias y, a continuación, seleccione el botón Agregar nueva referencia.... Para obtener más información sobre el cuadro de diálogo Referencias..., vea Marco de trabajo y referencias, Propiedades comunes, Páginas de propiedades de <nombreDeProyecto> (Cuadro de diálogo).

  3. Aparecerá el cuadro de diálogo Agregar referencia. Este cuadro de diálogo muestra todas las bibliotecas a las que puede hacer referencia. La ficha .NET muestra las bibliotecas que se incluyen con .NET Framework. La ficha COM muestra todos los componentes COM de su equipo. La ficha Proyecto enumera todos los proyectos de la solución actual y las bibliotecas que contienen. En la ficha Proyectos, seleccione MathFuncsAssembly y, a continuación, haga clic en Aceptar. Para obtener más información sobre el cuadro de diálogo Agregar referencia, vea Agregar referencia (Cuadro de diálogo).

    Nota:

    Puede hacer referencia a un ensamblado directamente desde el archivo de código fuente mediante la inclusión de la directiva #using, como en #using <MathFuncsAssembly.dll>. Para obtener más información acerca de esta característica, vea The #using Directive.

  4. Ahora puede utilizar la clase MyMathFuncs en esta aplicación. En MyExecRefsAssembly.cpp, reemplace el contenido de la función del archivo por el código siguiente:

    // 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. Genere el ejecutable seleccionando Generar solución en el menú Generar.

Para ejecutar la aplicación

  1. Asegúrese de que MyExecRefsAssembly está seleccionado como proyecto predeterminado. En el Explorador de soluciones, seleccione MyExecRefsAssembly y, a continuación, seleccione Establecer como proyecto de inicio en el menú Proyecto.

  2. Para ejecutar el proyecto, seleccione Iniciar sin depurar en el menú Depurar. El resultado debe tener la apariencia siguiente:

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

Pasos siguientes

Anterior:Crear y utilizar una biblioteca estática (C++) | Siguiente:Siguientes pasos (C++)

Vea también

Tareas

Paseo guiado por Visual C++

Otros recursos

Ensamblados en Common Language Runtime

Dominios de aplicación