Exportar (0) Imprimir
Expandir todo

Tutorial: Crear y utilizar una biblioteca de vínculos dinámicos

En este tutorial, creará una biblioteca de vínculos dinámicos (DLL) que contiene rutinas útiles que pueden ser utilizadas por otras aplicaciones. El uso de archivos DLL es una buena manera de reutilizar el código. En lugar de volver a implementar estas rutinas en todos los programas que cree, escríbalas una vez y haga referencia a ellas desde las aplicaciones que necesiten esa funcionalidad.

Este tutorial utiliza C++ nativo. Para ver un tutorial que utiliza C++ nativo con el fin de crear una biblioteca estática, vea Tutorial: Crear y utilizar una biblioteca estática. Para ver un tutorial que utiliza Visual C++ para Common Language Runtime, vea Tutorial: Crear y utilizar un ensamblado administrado.

En este tutorial se trata lo siguiente:

  • Crear un nuevo proyecto de biblioteca de vínculos dinámicos (DLL)

  • Agregar una clase a la biblioteca de vínculos dinámicos

  • Crear una aplicación que haga referencia a la biblioteca de vínculos dinámicos

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

  • Ejecutar la aplicación

En este tema se da por supuesto que conoce los fundamentos del lenguaje C++.

Para crear un nuevo proyecto de biblioteca de vínculos dinámicos (DLL)

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

  2. En el panel Tipos de proyecto, en Visual C++, seleccione Win32.

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

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

  5. Haga clic en Aceptar para iniciar el asistente para aplicaciones Win32. En la página Información general del cuadro de diálogo Asistente para aplicaciones Win32, haga clic en Siguiente.

  6. En la página Configuración de la aplicación del Asistente para aplicaciones Win32, en Tipo de aplicación, seleccione DLL si está disponible o Aplicación de consola si DLL no está disponible. Algunas versiones de Visual Studio no admiten la creación de un proyecto de archivo DLL mediante asistentes. Puede cambiar esto posteriormente para que el proyecto se compile en un archivo DLL.

  7. En la página Configuración de la aplicación del Asistente para aplicaciones Win32, en Opciones adicionales, seleccione Proyecto vacío.

  8. Haga clic en Finalizar para crear el proyecto.

Para agregar una clase a la biblioteca de vínculos dinámicos

  1. Para crear un archivo de encabezado para una nueva clase, en el menú Proyecto, seleccione Agregar nuevo elemento.... Aparecerá el cuadro de diálogo Agregar nuevo elemento. En el panel Categorías, en Visual C++, seleccione Código. En el panel Plantillas, seleccione Archivo de encabezado (.h). Elija un nombre para el archivo de encabezado, como MathFuncsDll.h, y haga clic en Agregar. Se mostrará un archivo vacío.

  2. Agregue una clase simple denominada MyMathFuncs para hacer operaciones matemáticas comunes, como suma, resta, multiplicación y división. El código debe tener una apariencia similar a la siguiente:

    // 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. Tenga en cuenta el modificador __declspec(dllexport) en las declaraciones de método anteriores. Estos modificadores permiten que el archivo DLL exporte el método por lo que pueden ser utilizados por otras aplicaciones. Para obtener más información, vea dllexport, dllimport.

  4. Para crear un archivo de código fuente para una nueva clase, en el menú Proyecto, seleccione Agregar nuevo elemento.... Aparecerá el cuadro de diálogo Agregar nuevo elemento. En el panel Categorías, en Visual C++, seleccione Código. En el panel Plantillas, seleccione Archivo C++ (.cpp). Elija un nombre para el archivo de código fuente, como MathFuncsDll.cpp, y haga clic en Agregar. Se mostrará un archivo vacío.

  5. Implemente la funcionalidad para MyMathFuncs en el archivo de código fuente. El código debe tener una apariencia similar a la siguiente:

    // 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 generar el proyecto en un archivo DLL, en el menú Proyecto, seleccione Propiedades… de MathFuncsDll. En el panel izquierdo, en Propiedades de configuración, seleccione General. En el panel derecho, cambie el Tipo de configuración a Biblioteca dinámica (.dll). Haga clic en Aceptar para guardar los cambios.

    NoteNota

    Si está generando desde la línea de comandos, utilice la opción del compilador /LD para especificar que el archivo de resultados debería ser un archivo DLL. Para obtener más información, vea /MD, /MT, /LD (Utilizar la biblioteca en tiempo de ejecución).

  7. Compile la biblioteca de vínculos dinámicos seleccionando Generar solución en el menú Generar. Esto crea un archivo DLL que puede ser utilizado 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 vínculos dinámicos

  1. Para crear una aplicación que haga referencia y utilice la biblioteca de vínculos dinámicos que se acaba de crear, en el menú Archivo, seleccione Nuevo y luego Proyecto….

  2. En el panel Tipos de proyecto, en Visual C++, seleccione Win32.

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

  4. Elija un nombre para el proyecto, como MyExecRefsDll, 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 vínculos dinámicos.

  5. Haga clic en Aceptar para iniciar el Asistente para aplicaciones Win32. En la página Información general del cuadro de diálogo Asistente para aplicaciones Win32, haga clic en Siguiente.

  6. En la página Configuración de la aplicación del Asistente para aplicaciones Win32, en Tipo de aplicación, seleccione Aplicación de consola.

  7. En la página Configuración de la aplicación del Asistente para aplicaciones Win32, en Opciones adicionales, cancele la selección de Encabezado precompilado.

  8. Haga clic en Finalizar para crear el proyecto.

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

  1. Después de crear una nueva consola de aplicación, se crea un programa vacío. El nombre del archivo de código fuente será el mismo que el elegido para el proyecto anterior. En este ejemplo, se llama MyExecRefsDll.cpp.

  2. Para utilizar las rutinas matemáticas que se crearon en la biblioteca de vínculos dinámicos, 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 y seleccione Referencias. Haga clic después en el botón Agregar nueva referencia…. Para obtener más información sobre el cuadro de diálogo Referencias…, vea Referencias, Propiedades comunes, Páginas de propiedades de <Nombre de proyecto> (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 Proyecto enumera todos los proyectos de la solución actual y las bibliotecas que contienen. En la ficha Proyectos, seleccione MathFuncsDll. Seleccione Aceptar. Para obtener más información sobre el cuadro de diálogo Agregar referencia, vea Agregar referencia (Cuadro de diálogo).

  4. Para hacer referencia a los archivos de encabezado de la biblioteca de vínculos dinámicos, debe modificar la ruta de acceso de los directorios de inclusión. Para ello, en el cuadro de diálogo Páginas de propiedades, expanda el nodo Propiedades de configuración, a continuación el nodo C/C++ y seleccione General. Junto a Directorios de inclusión adicionales, escriba la ruta de acceso a la ubicación del archivo de encabezado MathFuncsDll.h.

  5. La aplicación ejecutable no carga las bibliotecas de vínculos dinámicos hasta el tiempo de ejecución. Debe indicar al sistema dónde buscar MathFuncsDll.dll. Esto se realiza mediante la variable de entorno PATH. Para ello, en el cuadro de diálogo Páginas de propiedades, expanda el nodo Propiedades de configuración y seleccione Depuración. Junto a Entorno, escriba lo siguiente: PATH=<path to MathFuncsDll.dll file>, donde <path to MathFuncsDll.dll file> se reemplaza por la ubicación real de MathFuncsDll.dll. Haga clic en Aceptar para guardar todos los cambios realizados.

    NoteNota

    Si va a ejecutar la aplicación ejecutable desde la línea de comandos en vez de desde Visual Studio, debe actualizar la variable de entorno PATH manualmente desde la línea de comandos del modo siguiente: set PATH=%PATH%;<path to MathFuncsDll.dll file>, donde <path to MathFuncsDll.dll file> se reemplaza por la ubicación real de MathFuncsDll.dll.

  6. Ahora puede utilizar la clase MyMathFuncs en esta aplicación. Reemplace el contenido de MyExecRefsDll.cpp por el código siguiente:

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

Para ejecutar la aplicación

  1. Asegúrese de que MyExecRefsDll está seleccionado como proyecto predeterminado. En el Explorador de soluciones, seleccione MyExecRefsDll 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.0747475
    

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft