La Web del Programador: Comunidad de Programadores
 
    Pregunta:  4379 - CREACION Y USO DE LIBRERIAS EN C.
Autor:  Jose E. Martin Rodriguez
He desarrollado varias funciones, y quiero almacenarlas en una libreria (*.LIB) por lo cual pregunto ¿Como hago una libreria para mis funciones ? y ¿como la uso una vez que ya se creo la libreria?

  Respuesta:  ines lopez
yo he creado librerias , para programas que estan rotos, es decir, programas que tienen main por un lado y cada una d las funciones es otro archivo .c , con el kdvelop y funcionan perfectamente asikq t cuento lo q he echo y espero q t sirva de ayuda aunq, para ser sincera no se si sera lo mismo para otros programas.

en primer lugar creas un archivo con extension .h que sera el nombre de tu libreria. ej: mi_libreria.h

en ella primero tendrias q colocar las define , en caso de que kisieras q las aprovechen todas las funciones.
a continuacion tienes que poner los prototipos de las funciones oy luego iria el codigo que kieras meter en la libreria para ser aprovechado por el programa.

para cada parte del programa que kieras q utilice tu libreria tendrias que poner :
#include "mi_libreria.h"
si tienes el programa "roto" si no con poner esto mismo en main seria suficiente.

tienes que utilizar el simbolo " y no <> ya que con la segunda nomenclatura el compilador va directamente a una zona fijada d memoria donde tiene todas las bibliotecas d ese estilo como stdio o stdlib y la tuya al ser creada sera guardada en otra zona de memoria.

esto es lo q hay q hacer con el kdvelop espero q no difiera mucho de otros compiladores.

bueno espero haberte servido de ayuda.

  Respuesta:  Luis Machuca
Lo primer que tienes que hacer es colocar cada funcion que has creado, en un programa independiente.
Estos programas van a ser por ejemplo
funcion1.c
funcion2.c
...
funcionn.c

recuerda, una funcion en cada uno.

Posteriormente lo que tienes que hacer es compilar estos programas para obtener los *.OBJ (funcion1.obj, etc).
Ya que tienes esto, debes usar el linkeador de tu programa. Debiera llamarse TLIB.EXE, TCOMM.EXE o LIB.EXE, en el mismo directorio del programa.
Le dices lo siguiente:
TLIB.EXE [nombre de la libreria a crear.lib] , ,[+fuente.obj, +fuente2.obj, etc.]
que en tu caso seria mas o menos asi:

TLIB.EXE MyLib.lib,,+funcion1.obj +funcion2.obj ... +funcionn.obj
(los ficheros obj debieran estar en la misma carpeta del TLIB)

;el programa empieza a trabajar y despues de un rato te tiene que decir si encontro errores.
SI ya termino, verifica con un DIR el archivo MyLib.LIB.
SI tiene un tamaño distinto de 0 bytes y el TLIB no te arroja errores,
has creado tu libreria!

Para incorporarlas a un programa, usa este métodfo:

1.- Crea elñ programa MyProg.C
2.- Crea el programa MyLib.H
que contenga los prototipos de las funciones que creaste (igual que como la stdio.h)
3.- Añade la siguiente linea en las directirces de MyProg.C:
#include<MyLib.H>

4.- Guarda el programa y compilalo para obtener MyComp.OBJ
5.- Compila con el Turbo C++ IDE o con el programa CL.EXE (Microsoft C) o TLINK.EXE (Turbo C).

6.- Si el programa .EXE fue creado, las librerias fueron enlazadas con exito.
Ahi debieras tener tu archivo con librerias.

Es un proceso complicado pero debiera funcionar. Despuies de esto tienes las funciones guardadas en un .LIB, por tanto solo tu las conoces, ademas solo haces las llamadas con MyLib.H por tanto debiera salirte un programa mas corto.

Espero que alguien mas informado que yo pueda prestarte ayuda.
Suerte.

PD
En cualquier caso, haz una prueba e informame.

  Respuesta:  SluG
Las puedes almacenar en un fuchero .h. Ahi solo tienes que poner los prototipos de las funciones y las declaraciones de tipos y estructuras de datos que quieras. Para usarlas, simplemente tendrás que hacer un #include <fichero.h>