Exportar (0) Imprimir
Expandir todo

Tutorial: Crear y utilizar una biblioteca estática

En este tutorial, creará una biblioteca estática (LIB) que contiene rutinas útiles que pueden ser utilizadas por otras aplicaciones. Utilizar bibliotecas estáticas es una gran 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 de vínculos dinámicos (archivo DLL), vea Tutorial: Crear y utilizar una biblioteca de vínculos dinámicos. 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 estática

  • Agregar una clase a la biblioteca estática

  • Crear una aplicación que haga referencia a la biblioteca estática

  • Utilizar la funcionalidad de la biblioteca estática 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 estática

  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 MathFuncsLib, y escríbalo en el campo Nombre. Elija un nombre para la solución, como StaticLibrary, 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 Biblioteca estática.

  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 agregar una clase a la biblioteca estática

  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 MathFuncsLib.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:

    // MathFuncsLib.h
    
    namespace MathFuncs
    {
        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. 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 MathFuncsLib.cpp, y haga clic en Agregar. Se mostrará un archivo vacío.

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

    // MathFuncsLib.cpp
    // compile with: /c /EHsc
    // post-build command: lib MathFuncsLib.obj
    
    #include "MathFuncsLib.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;
        }
    }
    
  5. Para generar el proyecto en una biblioteca estática, en el menú Proyecto, seleccione Propiedades… de MathFuncsLib. En el panel izquierdo, en Propiedades de configuración, seleccione General. En el panel derecho, cambie el Tipo de configuración a Biblioteca estática (.lib). Haga clic en Aceptar para guardar los cambios.

    NoteNota

    Si está generando desde la línea de comandos, debe generar el programa en dos pasos. En primer lugar, compile el código utilizando Cl.exe con la opción del compilador /c (cl /c /EHsc MathFuncsLib.cpp). Esto creará un archivo objeto denominado MathFuncsLib.obj. Para obtener más información, vea /c (Compilar sin vincular). En segundo lugar, vincule el código mediante el Administrador de bibliotecas Lib.exe (lib MathFuncsLib.obj). Esto creará la biblioteca estática MathFuncsLib.lib. Para obtener más información sobre el Administrador de bibliotecas, vea Referencia de LIB.

  6. Compile la biblioteca estática seleccionando Generar solución en el menú Generar. Esto crea una biblioteca estática que puede ser utilizada por otros programas.

Para crear una aplicación que haga referencia a la biblioteca estática

  1. Para crear una aplicación que haga referencia y utilice la biblioteca estática 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 MyExecRefsLib, 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 estática.

  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 estática 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 MyExecRefsLib.cpp.

  2. Para utilizar las rutinas matemáticas que se crearon en la biblioteca estática, 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 MathFuncsLib. 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 estática, 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 MathFuncsLib.h.

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

    // MyExecRefsLib.cpp
    // compile with: /EHsc /link MathFuncsLib.lib
    
    #include <iostream>
    
    #include "MathFuncsLib.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;
    }
    
  6. Genere el ejecutable seleccionando Generar solución en el menú Generar.

Para ejecutar la aplicación

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