Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/12/2013, 17:28
Pernoctador
 
Fecha de Ingreso: noviembre-2008
Mensajes: 12
Antigüedad: 16 ańos
Puntos: 0
Exclamación El compilador me habla en chino

Buenas! con este titulo tan simpático presento mi problema que me tiene loco hace unos dias. Resulta que hace rato que no programo en C++ y más en linux, asi q decidí volver al ruedo con una clase Racionales.

Racional.cpp, Racional.hpp, mainRacionales.cpp (dnd puse un main y algunas pruebas)
En Racional estan las funciones de toda la vida (unos constructores, operator+, operator+=, etc)
Lo más dificil que tiene es operator<<

Cuando voy a compilar mainRacionales.cpp me dice q las referencias a Racional no están. Con lo cual entiendo que no esta pudiendo compilar Racional.cpp
Entonces compilo Racional.cpp y me sale lo siguiente:

Ejecuto
"g++ -o Raci Racional.cpp"
Código:
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): la reubicación 0 tiene un índice de símbolo 11 inválido
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): la reubicación 1 tiene un índice de símbolo 12 inválido
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): la reubicación 2 tiene un índice de símbolo 2 inválido
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): la reubicación 3 tiene un índice de símbolo 2 inválido
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): la reubicación 4 tiene un índice de símbolo 11 inválido
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): la reubicación 5 tiene un índice de símbolo 13 inválido
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): la reubicación 6 tiene un índice de símbolo 13 inválido
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): la reubicación 7 tiene un índice de símbolo 13 inválido
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): la reubicación 8 tiene un índice de símbolo 12 inválido
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): la reubicación 9 tiene un índice de símbolo 13 inválido
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): la reubicación 10 tiene un índice de símbolo 13 inválido
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): la reubicación 11 tiene un índice de símbolo 13 inválido
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): la reubicación 12 tiene un índice de símbolo 13 inválido
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): la reubicación 13 tiene un índice de símbolo 13 inválido
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): la reubicación 14 tiene un índice de símbolo 13 inválido
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): la reubicación 15 tiene un índice de símbolo 13 inválido
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): la reubicación 16 tiene un índice de símbolo 13 inválido
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): la reubicación 17 tiene un índice de símbolo 13 inválido
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): la reubicación 18 tiene un índice de símbolo 13 inválido
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): la reubicación 19 tiene un índice de símbolo 21 inválido
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_line): la reubicación 0 tiene un índice de símbolo 2 inválido
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o: En la función `_start':
(.text+0x20): referencia a `main' sin definir
collect2: error: ld returned 1 exit status

No pude encontrar en ningún lado que significa: "la reubicación % tiene un índice de símbolo % inválido",

Alguien tiene alguna minima idea de que pasa? Puede ser que este usando mal el compilador, o algo muy tonto. O que el compilador me odie.

Sigo: probe tmb con el gcc, y pasa lo mismo. Probe dejando y sacando el namespace std y los #include de Racional.h y es lo mismo. Tambien cambiando .hpp por .h xD
Incluso solamente deje en la clase el constructor y un Racional::display() y pasa lo mismo.

Código:
/**
Racional.cpp
*/
#include <iostream>
#include <cmath>
#include "Racional.hpp"

using namespace std;


Racional::Racional()
{
    Num = 0;
    Den = 1;
}

Racional::Racional(long numerador, long denominador)
{
    Num = numerador;
    Den = denominador;
    normalizar(*this);
}

Racional::Racional(const Racional &copia)
{
	Num = copia.Num;
	Den = copia.Den;
	//copia ya esta normalizada, asi q no necesito repetir la operacion.
}

/**
mainRacional.cpp
*/

#include <iostream>
#include "Racional.hpp"

using namespace std;

int main()
{
	Racional a(4,5);
	Racional b(9,3);
	Racional c;
	cout << "4/5 = ";
	a.display();
        return 0;
}