BIBLIOTECAS EN C

Si eres principiante y tienes alguna consulta entra en este foro.
Responder
Mensaje
Autor
namaste
Mensajes: 10
Registrado: 13/10/2019 6:20 pm

BIBLIOTECAS EN C

#1 Mensaje por namaste » 27/10/2019 5:37 pm

Buenas, hice un programa ".c" con sus funciones, y luego cree un archivo ".h" donde puse el nombre de todas las funciones y quiero saber si tengo algun error

Puse

Código: Seleccionar todo

#ifndef __BIBLIOTECA_H__
#define __BIBLIOTECA_H__

#include <stdio.h>  (esto porque en las funciones del archivo ".c" uso esta biblioteca)

constantes

int funcion(variables);

#endif /*__BIBLIOTECA_H__ */
Pero sin embargo cuando en otro programa pongo #include "biblioteca.h" al compilarlo me pone:
fatal error: biblioteca.h: No such file or directory
#include "biblioteca.h"

Y no entiendo en donde estaria mi error.
Tenia entendido que esa era la manera de crear una biblioteca, qué me faltaria hacer o qué está mal?

Gracias!!!
Última edición por namaste el 28/10/2019 6:49 am, editado 2 veces en total.

dehm
Mensajes: 328
Registrado: 29/04/2011 7:31 am

Re: BIBLIOTECAS EN C

#2 Mensaje por dehm » 28/10/2019 1:41 am

Hola. ¿Cómo lo compilaste? Supongo que ahí está el error :roll:
Aprendiendo

mollok
Mensajes: 522
Registrado: 30/01/2018 9:47 am
Ubicación: Mallorca, España

Re: BIBLIOTECAS EN C

#3 Mensaje por mollok » 28/10/2019 5:44 am

Eso es que en enlazador no lo encuentra.
Mira que se encuentre en la misma carpeta que el .c
while(is_alive(yourself)) {
    make_true(yourself, yourdreams);
}

namaste
Mensajes: 10
Registrado: 13/10/2019 6:20 pm

Re: BIBLIOTECAS EN C

#4 Mensaje por namaste » 28/10/2019 6:51 am

dehm escribió:
28/10/2019 1:41 am
Hola. ¿Cómo lo compilaste? Supongo que ahí está el error :roll:
Hola, puse "gcc archivo.c -o archivo"
"archivo seria donde puse #include "biblioteca.h"

namaste
Mensajes: 10
Registrado: 13/10/2019 6:20 pm

Re: BIBLIOTECAS EN C

#5 Mensaje por namaste » 28/10/2019 6:57 am

mollok escribió:
28/10/2019 5:44 am
Eso es que en enlazador no lo encuentra.
Mira que se encuentre en la misma carpeta que el .c
Seria tener una carpeta que contenga nis bibliotecas creadas y el programa que las usa?
Y cuando compilo deberia compilar por ejemplo "gcc carpeta.c -o carpeta"
Donde en carpeta se encuentran todos los archivos .h y .c

dehm
Mensajes: 328
Registrado: 29/04/2011 7:31 am

Re: BIBLIOTECAS EN C

#6 Mensaje por dehm » 28/10/2019 7:21 am

namaste escribió:
28/10/2019 6:51 am
dehm escribió:
28/10/2019 1:41 am
Hola. ¿Cómo lo compilaste? Supongo que ahí está el error :roll:
Hola, puse "gcc archivo.c -o archivo"
"archivo seria donde puse #include "biblioteca.h"
Hola.

Yo entiendo que la idea es que el archivo que vayas a compilar haga un include a la bilioteca. Si tienes separados los .c/.cpp de los .h, entonces el archivo que vas a compilar ha de incluir al .h, y éste al .c o .cpp

Te pongo un ejemplo:

lib.h

Código: Seleccionar todo

#ifndef __BIBLIOTECA_H__
#define __BIBLIOTECA_H__

#include "lib.cpp"

void Saludar();

#endif /*__BIBLIOTECA_H__ */
lib.cpp

Código: Seleccionar todo

void Saludar()
{
    std::cout<<"Hola\n";
}
Archivo que contiene el programa que vas a compilar:

Código: Seleccionar todo

#include <iostream>
#include "lib.h"

int main()
{
    Saludar();

return 0;
}
como ves, main.cpp incluye lib.cpp, y éste incluye lib.h

Ahora, y si todo está metido en la misma carpeta sólo has de hacer:

Código: Seleccionar todo

g++ main.cpp -o hola
(hola es el nombre que quieres que tenga tu ejecutable, y compilas main.cpp, el cual ya se encarga de hacer los includes)

Todo esto con el permiso de @mollok :D

Edito, que lo había puesto justo al revés
Aprendiendo

namaste
Mensajes: 10
Registrado: 13/10/2019 6:20 pm

Re: BIBLIOTECAS EN C

#7 Mensaje por namaste » 29/10/2019 11:01 am

dehm escribió:
28/10/2019 7:21 am
namaste escribió:
28/10/2019 6:51 am
dehm escribió:
28/10/2019 1:41 am
Hola. ¿Cómo lo compilaste? Supongo que ahí está el error :roll:
Hola, puse "gcc archivo.c -o archivo"
"archivo seria donde puse #include "biblioteca.h"
Hola.

Yo entiendo que la idea es que el archivo que vayas a compilar haga un include a la bilioteca. Si tienes separados los .c/.cpp de los .h, entonces el archivo que vas a compilar ha de incluir al .h, y éste al .c o .cpp

Te pongo un ejemplo:

lib.h

Código: Seleccionar todo

#ifndef __BIBLIOTECA_H__
#define __BIBLIOTECA_H__

#include "lib.cpp"

void Saludar();

#endif /*__BIBLIOTECA_H__ */
lib.cpp

Código: Seleccionar todo

void Saludar()
{
    std::cout<<"Hola\n";
}
Archivo que contiene el programa que vas a compilar:

Código: Seleccionar todo

#include <iostream>
#include "lib.h"

int main()
{
    Saludar();

return 0;
}
como ves, main.cpp incluye lib.cpp, y éste incluye lib.h

Ahora, y si todo está metido en la misma carpeta sólo has de hacer:

Código: Seleccionar todo

g++ main.cpp -o hola
(hola es el nombre que quieres que tenga tu ejecutable, y compilas main.cpp, el cual ya se encarga de hacer los includes)

Todo esto con el permiso de @mollok :D

Edito, que lo había puesto justo al revés
Hola, era que estaba en otra carpeta y al compilarlo lo compilaba mal. Solucionado, muchas gracias a ambos!! :D

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot], Google [Bot] y 5 invitados