elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [Error] ¿Porqué no compila este simple programa?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Error] ¿Porqué no compila este simple programa?  (Leído 2,785 veces)
Zodiak98

Desconectado Desconectado

Mensajes: 120


Ver Perfil
[Error] ¿Porqué no compila este simple programa?
« en: 16 Junio 2013, 16:21 pm »

Hola amigos, bueno este tema lo hago porqué me puse a practicar con los archivos de cabecera, pero tengo un error al compilar me sale estos 2 errores:

Código:
undefined reference to `suma(int, int)'
undefined reference to `resta(int, int)'

Acá están los archivos con las instrucciones:

Código
  1. //main.cpp
  2.  
  3. #include "operaciones.h"
  4.  
  5. int main()
  6. {
  7.    int resultadoSU = suma(4,5);
  8.    int resultadoRE = resta(12,4);
  9.  
  10.    printf("El resultado de la suma es: %d \n",resultadoSU);
  11.    printf("El resultado de la resta es: %d \n",resultadoRE);
  12.  
  13.    std::cin.get();
  14.  
  15.    return 0;
  16. }
  17.  

Código
  1. //operaciones.h
  2.  
  3. #ifndef OPERACIONES_H_INCLUDED
  4. #define OPERACIONES_H_INCLUDED
  5.  
  6. #include <iostream>
  7. #include <stdio.h>
  8.  
  9. int suma(int x , int y);
  10. int resta(int x , int y);
  11.  
  12.  
  13. #endif
  14.  

Código
  1. //operaciones.cpp
  2.  
  3. #include "operaciones.h"
  4.  
  5. int suma(int x , int y){ return ( x + y ); }
  6.  
  7. int resta(int x , int y){ return ( x - y ); }
  8.  

Qué estoy haciendo mal?


En línea

0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: [Error] ¿Porqué no compila este simple programa?
« Respuesta #1 en: 16 Junio 2013, 16:30 pm »

El caso es que el compilador no te incluye automáticamente los archivos de implementación. Puedes probar a dejar el archivo de cabecera así:

Código
  1. //operaciones.h
  2.  
  3. #ifndef OPERACIONES_H_INCLUDED
  4. #define OPERACIONES_H_INCLUDED
  5.  
  6. #include <iostream>
  7. #include <stdio.h>
  8.  
  9. int suma(int x , int y);
  10. int resta(int x , int y);
  11.  
  12. #include "operaciones.cpp" <--- Fijate en esto
  13.  
  14. #endif

Y quitar el include en operaciones.cpp.

Otra opción sería crear una biblioteca estática o dinámica.

Saludos.


En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
Zodiak98

Desconectado Desconectado

Mensajes: 120


Ver Perfil
Re: [Error] ¿Porqué no compila este simple programa?
« Respuesta #2 en: 16 Junio 2013, 16:44 pm »

Hehe gracias me funciono. Pero he visto varios vídeos que no incluyen el archivo de implementación al final de la cabecera, y ellos utilizan Code::Blocks, que es el qué yo utilizo.
En línea

aguml


Desconectado Desconectado

Mensajes: 378



Ver Perfil
Re: [Error] ¿Porqué no compila este simple programa?
« Respuesta #3 en: 16 Junio 2013, 16:49 pm »

A mi asi me funciona perfectamente:

Código
  1. #include "operaciones.h"
  2.  
  3. int main(int argc, char* argv[])
  4. {
  5.        int resultadoSU = suma(4,5);
  6.        int resultadoRE = resta(12,4);
  7.  
  8.        printf("El resultado de la suma es: %d \n",resultadoSU);
  9.        printf("El resultado de la resta es: %d \n",resultadoRE);
  10.  
  11.        getchar();
  12.  
  13.        return 0;
  14. }

Código
  1. //operaciones.c
  2.  
  3. #include "operaciones.h"
  4.  
  5. int suma(int x, int y){ return ( x + y ); }
  6.  
  7. int resta(int x, int y){ return ( x - y ); }

Código
  1. //operaciones.h
  2. #ifndef operacionesH
  3. #define operacionesH
  4. #include <stdio.h>
  5.  
  6. int suma(int x , int y);
  7. int resta(int x , int y);
  8. #endif

El problema es que usas una mezcla entre C y C++ mezclando archivos de C con archivos de C++. Si usas un .cpp tienes que usar un .hpp o al menos indicarlo como bien te idica el amigo o si no usa un solo tipo y no tendras problemas. Otra cosa ¿incluir iostream solo para una pausa? con lo bien que funciona getc o getchar y ya estan en stdio.h jejeje.
En línea

edr89

Desconectado Desconectado

Mensajes: 105


Ver Perfil
Re: [Error] ¿Porqué no compila este simple programa?
« Respuesta #4 en: 22 Junio 2013, 23:54 pm »

Otra cosa ¿incluir iostream solo para una pausa? con lo bien que funciona getc o getchar y ya estan en stdio.h jejeje.

getch() hace pausas y no muestra caracteres, tampoco necesita parametros, me gusta.

Hola amigos, bueno este tema lo hago porqué me puse a practicar con los archivos de cabecera, pero tengo un error al compilar me sale estos 2 errores
tengo un archivo de cabecera para un codigo y trate de incluir toda la informacion del preprocesador ahi, en este caso los prototipos de tus funciones basta que esten en el archivo.h y lo incluyas en tu codigo o las declares directamente antes de main().
En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: [Error] ¿Porqué no compila este simple programa?
« Respuesta #5 en: 23 Junio 2013, 00:28 am »

El caso es que el compilador no te incluye automáticamente los archivos de implementación. Puedes probar a dejar el archivo de cabecera así:

Código
  1. //operaciones.h
  2.  
  3. #ifndef OPERACIONES_H_INCLUDED
  4. #define OPERACIONES_H_INCLUDED
  5.  
  6. #include <iostream>
  7. #include <stdio.h>
  8.  
  9. int suma(int x , int y);
  10. int resta(int x , int y);
  11.  
  12. #include "operaciones.cpp" <--- Fijate en esto
  13.  
  14. #endif

Y quitar el include en operaciones.cpp.

Otra opción sería crear una biblioteca estática o dinámica.

Saludos.
Joe Dani, no recomiendes esas chapuzas xDDDD

Lo de la biblioteca estática es mejor. Para ello tienes que añadir el archivo .cpp en tu IDE.
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
porque me sale este error « 1 2 »
Programación Visual Basic
shadow.darknesses 11 4,530 Último mensaje 20 Enero 2007, 16:29 pm
por shadow.darknesses
Programa que compila, pero error en consola
Java
AndenBomber 1 2,770 Último mensaje 29 Mayo 2008, 19:49 pm
por HadesDark
[SOLUCIONADO] Porque da este error ??
PHP
Diabliyo 1 1,899 Último mensaje 17 Julio 2008, 17:49 pm
por Diabliyo
me podrian decir porque no compila este codigo?
Programación C/C++
gwennnnnn26 2 1,867 Último mensaje 2 Mayo 2017, 01:39 am
por MAFUS
porque no compila este codigo
Programación C/C++
gwennnnnn26 1 2,635 Último mensaje 6 Mayo 2017, 20:37 pm
por MAFUS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines