Como crear una Librería en C/C++

03 de Diciembre de 2019

Dificultad
C 25%
header-c-library
Las librerías en C y C++ son archivos o bloques de código con funciones especiales que podemos incluir en nuestro código importando sus funcionalidades. Muchas de las librerías que vamos a estar utilizando van a ser librerías que vienen por defecto en el compilador de C y C++. Las librerías estándar por ejemplo, “stdlib.h” y “stdio.h”, que importan funciones y tipos de datos especiales, comunicación con periféricos de entrada y salida como la pantalla y el teclado así como el manejo de archivos.
 
library-example
De esta manera se pueden importar funciones muy útiles a nuestro código. Entonces surge la pregunta, ¿Podemos crear nuestras propias librerías?. La respuesta es sí, cuando queremos compartir funciones o tipos de datos comunes entre varios códigos, o cuando queremos “modularizar” nuestro proyecto, de manera que todo el código no aparezca en un solo archivo para que pueda ser más legible. 

En una ocacion que me tocó hacer un servidor para un chat de consola, el código era tan grande que y muchas funciones se repetían, así que decidí seccionar el código en pequeñas librerías o módulos, quedando de esta manera.

Cómo creamos nuestra propia librería

Entonces yendo al grano y al propósito de éste blog, como creamos nuestras propias librerías. La verdad es que es un procedimiento más fácil del que parece. Y podemos dividirlo en 2 métodos.
Método 1: Utilizar librerías en el mismo directorio #include “libreria.h”
Pongamos el ejemplo de que quiero crear una librería para operaciones aritméticas y quiero incluir esta librería para probarla en otro archivo. Para esto seguimos los siguientes pasos.

1. Crear el archivo de cabeceras

Creamos un archivo con extensión “.h” en el mismo directorio del código principal, éste archivo debe tener todos los prototipos de funciones y definiciones de tipos de datos de tu librería.
#ifndef _LIBRERIA
#define _LIBRERIA

float suma(float A,float B);
float resta(float A,float B);
float multiplicacion(float A,float B);

#include  ″libreria.c″
#endif

2. Crear el archivo del código de la librería

El archivo del código de la librería, contiene incluye el archivo de cabecera que creamos anteriormente y además contiene el código de todas las funciones que fueron escritas en el archivo de cabecera.

 

#include ″libreria.h″

float suma(float A,float B){
   return A+B;
}
float resta(float A,float B){
   return A-B;
}
float multiplicacion(float A,float B){
   return A*B;
}

3. Llamar a la librería

Cuendo esten terminados ambos archivos, nuestra librería está lista para ser usada. Creamos el archivo test.c dentro del mismo directorio, incluimos las librerías estándar y la nueva librería que creamos.

 

#include ″libreria.h″

void main(){ int A = 1; int B = 2; printf(″Resultado de %d+%d = %f\n″, A,B,suma(A,B)); printf(″Resultado de %d-%d = %f\n″, A,B,resta(A,B)); printf(″Resultado de %d*%d = %f\n″, A,B,multiplicacion(A,B)); return 0;
}
Método 2: Utilizar librerías en el directorio include del compilador #include <libreria.h>
Éste segundo método consiste en guardar una copia de la librería que creamos antes, directamente en la carpeta del compilador. Esto permitirá llamar a la librería desde cualquier código como si fuese una librería estandar.
 
1. Copiar la librería a la carpeta del compilador

Copiar los archivos “libreria.h” y “libreria.c” a la carpeta include del compilador, la ruta de esta carpeta podría cambiar dependiendo del programa que estés utilizando. En mi caso utilizo el IDE Dev-C++ y la ruta sería la siguiente.

C:\Program Files (x86)\Dev-Cpp\MinGW64\include

 

sistema-archivos-include

2. Llamar a la librería

Luego de copiar los archivos a esa carpeta, se puede utilizar la librería como si fuese una librería estándar, sin necesidad de tener los archivos dentro del directorio del código principal.

Para llamar a la librería usamos la instrucción #include <libreria.h>, utilizamos <> en ves de " " por que de esta manera el compilador buscara la librería en la carpeta inclulde y no en el directorio del código principal.
#include <libreria.h>

void main(){
    int A = 1;
    int B = 2;
    printf(″Resultado de %d+%d = %f\n″, A,B,suma(A,B));
    printf(″Resultado de %d-%d = %f\n″, A,B,resta(A,B));
    printf(″Resultado de %d*%d = %f\n″, A,B,multiplicacion(A,B));
    
return 0;
}

Otros Posts: