undefined reference to.. (Build failed) ¿A qué se debe el error?.

Iniciado por TØtti, 29 Febrero 2016, 03:40 AM

0 Miembros y 1 Visitante están viendo este tema.

TØtti

Hola. Estaba practicando con las clases y objetos (soy nuevo), la cual me encuentro con estos errores que no logro comprender porque pasa.

Los errores ocurren el fichero; mejores-amigos.cpp

undefined reference to `tfri::SetFrie(std::string)'
undefined reference to `tfri::puntos(int, int, int)'
undefined reference to `tfri::ResultadoFinal()'


mejores-amigos.cpp

Código (cpp) [Seleccionar]
#include <iostream>
#include <string>

#include "tfriends.h"

using namespace std;

int pp1,pp2,pp3;

int main()
{
   tfri amiwo;
   string men;

   cout<<"Promedio de tu mejor amigo"<<endl;
   cout<<endl;

   cout<<"Coloca el nombre de tu amigo"<<endl;
   getline(cin,men);
   amiwo.SetFrie(men);

   cout<<endl;

   cout<<"Coloca tres notas para tu amigo: "<<endl;

   cout<<"¿Del 1-5 que buenos consejos da tu amigo?"<<endl;
   cin>>pp1;
   cout<<"¿Del 1-5 que tanto te tolera tu amigo?"<<endl;
   cin>>pp2;
   cout<<"¿Del 1-5 que tanto te quiere tu amigo?"<<endl;
   cin>>pp3;

   amiwo.puntos(pp1,pp2,pp3);

   cout<<endl;

   cout<<"EL resultado es: "<<amiwo.ResultadoFinal();

   return 0;
}



tfriends.h

Código (cpp) [Seleccionar]
#include <string>

using namespace std;

class tfri
{
private:
   string amigo_original;
   int presultado;

public:
   void SetFrie(string);
   void puntos(int,int,int);
   int ResultadoFinal();

};


tfriends.cpp

Código (cpp) [Seleccionar]
#include <iostream>
#include "tfriends.h"

int main()
{
   return 0;
}

///////////////////////////////////////////////////
void tfri::SetFrie(string amigo)
{
   amigo_original = amigo;
}

void tfri::puntos(int puntos, int puntos2, int puntos3)
{
   presultado = (puntos + puntos2, + puntos3) / 3;
}

int tfri::ResultadoFinal()
{
   return presultado;
}


Gracias.

ivancea96

En primer lugar, en un programa solo hay 1 main. Quita el main del .cpp de la clase.

Luego, el .cpp de la clase lo tienes que compilar primero. Eso generará un .o. Al compilar el mejores-amigos.cpp, también generará un .o. Luego, juntas y compilas ambos .o. El erro es que no encuentra la implementación de esas funciones. Eso es porque supongo que no se compiló el .cpp de la clase.

Todo esto te lo hace solo la mayoria de los IDE. Si creas un proyecto en el IDE, te lo debería hacer solo. ¿Qué utilizas para programar C++?

TØtti

#2
Lo habia quitado antes, pero me salio el siguiente error:

Undefined reference to 'WinMain@16'

ya tenia los dos archivos .o (el cpp de la clase y el cpp de mejores-amigos)

http://prntscr.com/a9lhz1

¿Cómo juntos los .o y los compilo?. Estoy usando codeblocks 13.12, aunque si, cree lo archivos individualmente por lo cual no lo hice mediante un proyecto de consola, me imagino que afecta. El problema es que me lio un poco al crear el proyecto, ni siquiera sé crear un archivo nuevo en el proyecto  :xD. Gracias.

ivancea96

Lo mejor es eso,q ue crees un proyecto, y le metas ambos archivos. Code::Blocks hará el resto.

Para agregar archivos al proyecto, o le das a "Add files", o a "New file" en el menú de la barra superior, y ya te va a pregutnar si lo quieres meter al proyecto.