El siguiente manual va a tratar sobre cómo crear tu propia biblioteca en un compilador de C/C++. La biblioteca, o también mal conocida como librería (del ingles library) nos permite el uso de funciones en un programa sin la necesidad de escribir su código en nuestro programa, únicamente llamando a la biblioteca donde está contenida. Existen bibliotecas estándares en C que ya vienen incluida en la mayoría de los compiladores, como son stdio.h, math.h, time.h...
Para utilizar nuestra biblioteca, únicamente basta con situar en la cabecera del programa el nombre de la biblioteca para poder utilizar todas las funciones contenidas en la misma.
A continuación se detallan los paso para la construcción de una biblioteca o librería:
MANUAL CREACIÓN BIBLIOTECA:
1º) Genera las funciones que te interesan y escribelas todas juntas (codigo y cabeceras) en un mismo archivo de texto (Puedes usar el editor de texto del compilador, el bloc de notas, igual da...) tal y como se ilustra a continuación con un sencillo ejemplo:
int multiplica(int A, int B);
int suma(int A, int B);
int resta(int A, int B);
int multiplica(int A, int B)
{
return(A*B);
}
int suma(int A, int B)
{
return(A+B);
}
int resta(int A, int B)
{
return(A-B);
}
2º) El fichero creado anteriormente, guardalo con extension .h, por ejemplo milibreria.h (importante no ejecutarlo para que no le pueda cambiar sola la extensión). Se deberá guardar en la carpeta include del compilador. Esta carpeta se puede encontrar facilmente en la misma carpeta del compilador., accediendo a Mi PC (Equipo) y en la carpeta donde se guardan todos los programas.
Otra opción es que si solo se desea usar mibiblioteca.h una unica vez, se puede guardar el fichero en la misma carpeta del codigo que queramos compilar. Dependiendo de este ultimo paso tendremos...
3º)Llamar a la biblioteca en el programa. Deberemos colocar en la cabecera del programa, junto a los llamamiento de otras bibliotecas:
#include <milibreria.h> Cuando el fichero milibreria.h se encuentre en la carpeta include de nuestro compilador.
#include "milibreria.h" Cuando el fichero milibreria.h esté en el mismo directorio que el archivo que queremos compilar.
4º)Uso de las funciones de la biblioteca: Finalmente ya podemos usar las funciones de milibreria.h sin necesidad de copiar el codigo, tal y como ilustra el programa siguiente:
#include <stdio.h>
#include <milibreria.h>
int main(void)
{
int X,Y;
scanf("%d %d",&X,&Y);
printf("X*Y=%d \n",multiplica(X,Y));
printf("X+Y=%d \n",suma(X,Y));
printf("X-Y=%d \n",resta(X,Y));
}
Y en el caso de que milibreria.h esté en la misma carpeta:
#include <stdio.h>
#include "milibreria.h"
int main(void)
{
int X,Y;
scanf("%d %d",&X,&Y);
printf("X*Y=%d \n",multiplica(X,Y));
printf("X+Y=%d \n",suma(X,Y));
printf("X-Y=%d \n",resta(X,Y));
}
Nota: En el caso de que tengan por un lado las declaraciones de las funciones en un fichero .h, y por otro lado, un fichero .c con los cuerpos de las funciones, debe proceder del modo siguiente:
-Fichero milibreria.h:
int multiplica(int A, int B);
int suma(int A, int B);
int resta(int A, int B);
-Fichero milibreria.c:
#include "milibreria.h"
int multiplica(int A, int B){
return(A*B);
}
int suma(int A, int B){
return(A+B);
}
int resta(int A, int B){
return(A-B);
}
-Fichero del programa principal main.c:
#include <stdio.h>
#include "milibreria.h"
#include "milibreria.c"
int main(void)
{
int X,Y;
scanf("%d %d",&X,&Y);
printf("X*Y=%d \n",multiplica(X,Y));
printf("X+Y=%d \n",suma(X,Y));
printf("X-Y=%d \n",resta(X,Y));
}
Cualquier duda pregunten. Espero que les haya servido este manual y creen ahora sus propias librerias.
Resolución de distintos problemas en el ámbito de la ingenieria mediante el uso de la programación. Los programas abarcan todos los niveles de dificultad, así como la mayoría de las herramintas con las que contamos al programar. Si tienes cualquier duda a cerca de un programa, o quieres proponer alguna nueva entrada, no dudes en contactar escribiendo en cualquiera de las entradas del blog ¡Bienvenido!
viernes, 30 de noviembre de 2012
Manual para para crear tu propia biblioteca en C/C++
Etiquetas:
# C,
BIBLIOTECAS,
C,
CREAR TU PROPIA LIBRERIA,
FUNCIONES EN C,
LIBRERIAS
Suscribirse a:
Enviar comentarios (Atom)
Hey muchas gracias por este aporte, me sirvió demasiado
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarMe sirvió mucho
ResponderEliminarGracias! :)
Muchas gracias a ti Catherine!
Eliminargracias amigo te mando un saludo
ResponderEliminarGracias por visitarme, un saludo.
EliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarGracias por el aporte.
ResponderEliminar¿Realmente, se podría decir que la creación de librearías es como crear funciones que van a ser llamadas en el programa pero en vez de utilizar "main" o "void", creamos directamente la función en un archivo ".h", no?
Tengo una pregunta, ¿Cómo se podría crear un fichero ".h" que funcionara de diccionario de sinónimos?. Quiero decir, por ejemplo: "No = Nunca = Jamás", ó, "No lo se = Tal vez = Quien sabe".
Es para que al responder una pregunta el ordenador sea capaz de determinar si una respuesta es "si, no, o quizás", pero sin que la expresión a utilizar tenga que ser necesariamente "No, si o quizás".
¿También se podría crear a través de un fichero ".txt" y utilizando funciones de la librería ?
Gracias de nuevo. Fisgonearé mas en tu blog, parece interesante.
P.D.: Este es un libro que hay en wikilibros, a lo mejor puede resultar un tanto básico y no se si aportará, pero para mi que estoy comenzando con esto de la programación me está viniendo genial, lo dejo aquí el enlace por si a alguien le puede resultar interesante:
http://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C
Si hay algún problema o infrinjo alguna norma no dudes en hacer lo que creas necesario.
Corrijo: "¿También se podría crear a través de un fichero ".txt" y utilizando funciones de la librería string.h?"
EliminarHola Diego, lo primero de todo es darte la bienvenida al blog.
EliminarComo tu has dicho, al fin y al cabo el llamar a una biblioteca o una función viene a ser lo mismo, con la diferencia de que la biblioteca se encuentra en otro fichero y las funciones deben estar en el mismo. Yo por lo general me decanto por el uso de funciones, ya que no suele haber muchas de éstas que uses en diferentes programas, por lo que tampoco me merece pasar por el "complicado" tramite de crearte una. Sin embargo, si en tu caso piensas que vas a necesitar ciertas funciones en un numero importante de programas, yo te animo a que te ordenes las funciones de esa manera por temáticas.
En cuanto a lo del diccionario de sinónimos, lo más sencillo es guardarlo en un .txt. Por ejemplo, en cada línea, guardar la palabra primero, y luego sus sinónimos tal que:
Sí/ Vale/ Me parece bien
No/Nunca/Jamás
Quizás/Tal vez/No lo sé
...
Y para trabajr con ficheros de texto es suficiente con la biblioteca IO sino recuerdo mal.
Un saludo, espero que te haya sido útil y gracias por tu aporte.
Muchas gracias por el aporte un saludo
ResponderEliminarMuchas gracias Angel, encantado de que sea útil
EliminarUn saludo
me gustaria que explicaran las funciones desde lo basico porfavor
ResponderEliminar¿El cómo funcionan las funciones en C?
ResponderEliminarGenial articulo me ha sido super útil !!!
ResponderEliminarEs bastante útil, aunque en mi caso, me han proporcionado una librería pero en ella, están el archivo.h y archivo.c . En el archivo.h sólo vienen especificadas las funciones y en archivo.c ya vienen programadas las funciones declaradas en archivo.h.
ResponderEliminarCuando corro un programa, me dice que referencia a 'funcion' sin definir. supongo que porque no está enlazado el archivo.h con el archivo.c pero... no se como hacerlo. Tienes alguna idea?
Supongo que en tu caso tendrás por un lado un fichero .h con las declaraciones (milibreria.h):
Eliminarint multiplica(int A, int B);
int suma(int A, int B);
int resta(int A, int B);
Y otro .c (milibreria.c) con los cuerpos de las funciones, donde se llama también al fichero .h:
#include "milibreria.h"
int multiplica(int A, int B)
{
return(A*B);
}
int suma(int A, int B)
{
return(A+B);
}
int resta(int A, int B)
{
return(A-B);
}
Es importante que ambos ficheros tengan el mismo nombre a excepción de la extensión. Para utilizar las funciones de la biblioteca bastará con que añadas el comando #include en el código de tu programa, tanto para el .c como para el .h:
#include
#include "milibreria.h"
#include "milibreria.c"
int main(void)
{
int X,Y;
scanf("%d %d",&X,&Y);
printf("X*Y=%d \n",multiplica(X,Y));
printf("X+Y=%d \n",suma(X,Y));
printf("X-Y=%d \n",resta(X,Y));
}
Espero que funcione, sino hazmelo saber.
Un saludo
Este comentario ha sido eliminado por el autor.
ResponderEliminarMuy buen material me sirvió para aclarar ciertas dudas excelente :D
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarHola,me podrias explicar como creo en visual studio un proyecto para poder crear una librería en c++,lo que pasa es que yo tengo el visual studio Enterprises y tengo un nivel de programacíon bastante basico,entonces ami solamente me han enseñado ha crear un proyecto de una sola forma con el enterprises y es 1.archivo,2.nuevo,3.proyecto,4.instalado,5.plantillas,6.visualC++,7.CLR,8.proyecto vacío de CLR o CLR Empity proyect.todo esto en visual studio enterprises,porque tengo entendido que en profesional es diferente ,bueno ,lo que pasa es que cuando yo ago esto y luego copio esto:
ResponderEliminarint multiplica(int A, int B);
int suma(int A, int B);
int resta(int A, int B);
int multiplica(int A, int B)
{
return(A*B);
}
int suma(int A, int B)
{
return(A+B);
}
int resta(int A, int B)
{
return(A-B);
}
y lo pego en el desarrollo de mi proyecto con la intencion de seguir los pasos del manual y crear una biblioteca,me sale una rayita en no mas de una casilla de este tamaño aprox: _ ,y me sale eso en el primer reglon en la primera casilla(por decirlo asi no)y cuando yo pongo el mause sobre esa rayita que indica algun error ,me sale "Advertencia de PCH:el elemento stop del encabezado debe estar en el ámbito global.No se genero un archivo PCH intellisense"(bueno yo nose como se dira esto en ingles ,derrepente esta mal traducido), entonces yo nose si esta bien;o si deveria de usar visual studio profesional o cual seria la forma de poder crear un proyecto para crear una biblioteca con enterprises.
gracias ,ayuda lo mas pronto posible porfis es para un trabajo
actualiza la creación de librerías para versiones recientes
ResponderEliminarSi mis funciones tienen en sus parámetros estructuras incluidas, ¿Donde pongo esas estructuras?
ResponderEliminary por ejemplo quiero usar una biblioteca donde se usen estructuras?
ResponderEliminarTengo una duda. ¿Para que sirve dividir la biblioteca en 2 archivos? Uno .h y el otro .c
ResponderEliminarMuchas gracias.He pasado todo el dia buscando como se hacen las bibliotecas y gracias a ti ya lo comprendí
ResponderEliminarHola, buenas noches.
ResponderEliminarTengo un problema con una clase que cree, intento comparar dos números, sin embargo al momento de ejecutarlo solo toma el valor de x.
//Librería llamada función
int comparacion (x,y);
int comparacion (x,y){
if (x>y){
return x;
}else if (y>x){
return y;
}
} // fin de la librería
//Inicio de mi programa
#include
#include "comparacion.h"
#include
int main (void){
setlocale(LC_CTYPE,"Spanish");
int x[]={'4'};
int y[]={'4'};
//Para verificar que el número correponde a dicho arreglo
printf("\nEl valor del arreglo 'x' es: %s\n",x); //Para verificar que el número correponde a dicho arreglo
printf("\nEl valor del arreglo 'y' es: %s\n",y);
if (x[0]==y[0]){
printf("\nLos valores ingresados en los arreglos son iguales.\n");
}else{
printf ("\nEl número mayor es: %s\n",comparacion(x,y));
}
printf("\nFin del programa\n\a");
}