Compartir a través de


Tutorial: Crear y utilizar una biblioteca estática (C++)

El siguiente tipo de biblioteca que crearemos es una biblioteca estática (LIB). Utilizar bibliotecas estáticas es una gran 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 muestra cómo llevar a cabo las tareas siguientes:

  • Crear un proyecto de biblioteca estática.

  • Agregar una clase a la biblioteca estática.

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

  • Utilizar la funcionalidad de la biblioteca estática en la aplicación.

  • Ejecute 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 que vea este tutorial en MSDN Library: Tier One: C++ Beginner's Guide.

Para crear un proyecto de biblioteca estática

  1. En el menú Archivo, seleccione Nuevo y, a continuación, 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 de la solución.

  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, desactive la casilla 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. Aparece 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, a continuación, haga clic en Agregar. Se mostrará un archivo vacío.

  2. Agregue una clase denominada MyMathFuncs para hacer operaciones matemáticas comunes, como la suma, resta, multiplicación y división. Para ello, reemplace el contenido de MathFuncsLib.h con el código 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. Aparece 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 origen, como MathFuncsLib.cpp y, a continuación, haga clic en Agregar. Se mostrará un archivo vacío.

  4. Implemente la funcionalidad para MyMathFuncs en el archivo de código fuente. Para ello, reemplace el contenido de MathFuncsLib.cpp con el código 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 compilar el proyecto en una biblioteca estática, en el menú Proyecto, seleccione Propiedades. 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.

    Nota

    Cuando genere 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 de consola 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, a continuación, 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 el cuadro de 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, desactive la casilla Encabezado precompilado.

  8. Haga clic en Finalizar para crear el proyecto.

Para utilizar la funcionalidad de la biblioteca estática en la aplicación

  1. Después de crear una aplicación de consola, el asistente 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. Debe hacer referencia a la biblioteca estática que creó para utilizar sus rutinas matemáticas. Para ello, seleccione Referencias en el menú Proyecto. En el cuadro de diálogo Páginas de propiedades de MyExecRefsLib, expanda el nodo Propiedades comunes y, a continuación, haga clic en 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. La pestaña Proyectos enumera los proyectos de la solución actual y las bibliotecas a las que puede hacer referencia. En la pestaña Proyectos, seleccione MathFuncsLib. Haga clic en Aceptar.

  4. Para hacer referencia al archivo de encabezado MathFuncsLib.h, debe modificar la ruta de acceso de los directorios de inclusión. En el cuadro de diálogo Páginas de propiedades de MyExecRefsLib, expanda el nodo Propiedades de configuración, expanda el nodo C/C++ y, a continuación, seleccione General. En el valor de propiedad Directorios de inclusión adicionales, escriba la ruta de acceso del directorio MathFuncsLib o búsquela.

    Para buscar la ruta del directorio en el cuadro de lista desplegable del valor de propiedad, haga clic en Editar. En el cuadro de diálogo Directorios de inclusión adicionales, en el cuadro de texto, seleccione una línea en blanco y, a continuación, haga clic en los puntos suspensivos (...) al final de la línea. En el cuadro de diálogo Seleccionar directorio, seleccione el directorio de MathFuncsLib y, a continuación, haga clic en Seleccionar carpeta para guardar la selección y cerrar el cuadro de diálogo. En el cuadro de diálogo Directorios de inclusión adicionales, haga clic Aceptar.

  5. Ahora puede utilizar la clase MyMathFuncs en esta aplicación. Para ello, reemplace el contenido de MyExecRefsLib.cpp con 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, Establecer como proyecto de inicio en el menú Proyecto.

  2. Para ejecutar el proyecto, seleccione Iniciar sin depurar en el menú Depurar. El resultado debería ser similar a lo siguiente:

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

Pasos siguientes

Anterior: Tutorial: Crear y utilizar una biblioteca de vínculos dinámicos (C++) | Siguiente: Tutorial: Crear y utilizar un ensamblado administrado (C++)

Vea también

Tareas

Paseo guiado por Visual C++

Tutorial: Implementar el programa (C++)

Otros recursos

Metodologías de programación de Visual C++

Implementación (Visual C++)

Historial de cambios

Fecha

Historial

Motivo

Septiembre de 2010

Se aclaró el Paso 4 de "Para utilizar la funcionalidad de la biblioteca estática en la aplicación".

Comentarios de los clientes.