Página 1 de 1

Problema con el Linker "reubicación truncada para ajustar"

Publicado: 24 Jun 2010, 02:43
por gokuhs
Hola a todos!

Estoy teniendo ciertos problemas al linkear esta parte del código (pongo una parte si lo quereís ocmpleto lo pego entero)

Código: Seleccionar todo

class ListaPrincipal
{
  protected :
    static Uint32 frames, tiempo, t_espera;
    [...]
    //Resto de variables
  public :
    ListaPrincipal();
    ~ListaPrincipal();
    [...]
    static int refrescar(SceSize args, void *argp);
};


 ListaPrincipal::ListaPrincipal()
{
  [...]
  frames = Uint32( 1000 / FOTOGRAMAS );
  tiempo = SDL_GetTicks() + frames;
}

int ListaPrincipal::refrescar(SceSize args, void *argp)
{
  int flag = 0;
  SDL_Event event;
  while(!flag)
  {
    if (SDL_PollEvent(&event)) {
     /* an event was found */
      switch (event.type) {
   /* close button clicked */
   case SDL_QUIT:
     flag = 1;
     break;
      }
    }
    t_espera = tiempo - SDL_GetTicks();
    if ( ( t_espera > 0 ) && ( t_espera < frames ) ) SDL_Delay( t_espera );
    else tiempo = SDL_GetTicks();
    tiempo += frames;
  }
  return 0;
}


Esa es la parte del código donde me da el siguiente error:

Código: Seleccionar todo

claseListaSDL.cpp:(.text+0xa0): referencia a `ListaPrincipal::tiempo' sin definir
claseListaSDL.cpp:(.text+0xa0): reubicación truncada para ajustar: R_MIPS_GPREL16 contra `ListaPrincipal::tiempo'
claseListaSDL.cpp:(.text+0xcc): referencia a `ListaPrincipal::t_espera' sin definir
claseListaSDL.cpp:(.text+0xcc): reubicación truncada para ajustar: R_MIPS_GPREL16 contra `ListaPrincipal::t_espera'
claseListaSDL.cpp:(.text+0xd0): referencia a `ListaPrincipal::frames' sin definir
claseListaSDL.cpp:(.text+0xd0): reubicación truncada para ajustar: R_MIPS_GPREL16 contra `ListaPrincipal::frames'
claseListaSDL.cpp:(.text+0x100): referencia a `ListaPrincipal::tiempo' sin definir
claseListaSDL.cpp:(.text+0x100): reubicación truncada para ajustar: R_MIPS_GPREL16 contra `ListaPrincipal::tiempo'
claseListaSDL.cpp:(.text+0x104): referencia a `ListaPrincipal::tiempo' sin definir
claseListaSDL.cpp:(.text+0x104): reubicación truncada para ajustar: R_MIPS_GPREL16 contra `ListaPrincipal::tiempo'
claseListaSDL.cpp:(.text+0x108): referencia a `ListaPrincipal::frames' sin definir
claseListaSDL.cpp:(.text+0x108): reubicación truncada para ajustar: R_MIPS_GPREL16 contra `ListaPrincipal::frames'
claseListaSDL.cpp:(.text+0x114): referencia a `ListaPrincipal::tiempo' sin definir
claseListaSDL.cpp:(.text+0x114): reubicación truncada para ajustar: R_MIPS_GPREL16 contra `ListaPrincipal::tiempo'
claseListaSDL.cpp:(.text+0x144): referencia a `ListaPrincipal::tiempo' sin definir
claseListaSDL.cpp:(.text+0x144): reubicación truncada para ajustar: R_MIPS_GPREL16 contra `ListaPrincipal::tiempo'
claseListaSDL.cpp:(.text+0x1a0): referencia a `ListaPrincipal::tiempo' sin definir
claseListaSDL.cpp:(.text+0x1a0): reubicación truncada para ajustar: R_MIPS_GPREL16 contra `ListaPrincipal::tiempo'
class/claseListaSDL.o: En la función `ListaPrincipal::ListaPrincipal()':
claseListaSDL.cpp:(.text+0x31c): referencia a `ListaPrincipal::frames' sin definir
claseListaSDL.cpp:(.text+0x31c): reubicación truncada para ajustar: R_MIPS_GPREL16 contra `ListaPrincipal::frames'
claseListaSDL.cpp:(.text+0x334): referencia a `ListaPrincipal::frames' sin definir
claseListaSDL.cpp:(.text+0x334): se omitieron desbordamientos de reubicación adicionales de la salida
claseListaSDL.cpp:(.text+0x34c): referencia a `ListaPrincipal::tiempo' sin definir
claseListaSDL.cpp:(.text+0x394): referencia a `ListaPrincipal::frames' sin definir
claseListaSDL.cpp:(.text+0x3a4): referencia a `ListaPrincipal::tiempo' sin definir
class/claseListaSDL.o: En la función `ListaPrincipal::ListaPrincipal()':
claseListaSDL.cpp:(.text+0x4fc): referencia a `ListaPrincipal::frames' sin definir
claseListaSDL.cpp:(.text+0x514): referencia a `ListaPrincipal::frames' sin definir
claseListaSDL.cpp:(.text+0x52c): referencia a `ListaPrincipal::tiempo' sin definir
claseListaSDL.cpp:(.text+0x574): referencia a `ListaPrincipal::frames' sin definir
claseListaSDL.cpp:(.text+0x584): referencia a `ListaPrincipal::tiempo' sin definir


Gracias por la ayuda!

Re: Problema con el Linker "reubicación truncada para ajusta

Publicado: 24 Jun 2010, 14:05
por m0skit0
Qué extraño... Si puedes subir el código compilable que da el error, podría probar a compilarlo yo.

Re: Problema con el Linker "reubicación truncada para ajusta

Publicado: 24 Jun 2010, 14:20
por gokuhs
Ya lo solucioné m0skit0 gracias;

Me tocó hacer con todos los miembros estáticos de la clase lo siguiente:

Código: Seleccionar todo

int ListaPrincipal::numSuperficies = 0;
bool ListaPrincipal::refre = false;
nodoImagenes * ListaPrincipal::primero =  NULL;
SDL_Surface * ListaPrincipal::principal = NULL;
nodoImagenes * ListaPrincipal::surfMSGBox = NULL;
nodoImagenes * ListaPrincipal::surfCursor = NULL;
Uint32 ListaPrincipal::frames = Uint32();
Uint32 ListaPrincipal::tiempo = Uint32();
Uint32 ListaPrincipal::t_espera = Uint32();


Una vez lo hice los datos tipos Uint32 me dejaron de dar ese error en el Linker. Sinceramente no se porqué daría ese error y me obligue a inicializaros fuera del constructor.

(si sigues interesado te subo el código sin modificar para que le eches un vistazo)

De todas formas ahora abriré otro hilo porque sigo con mas problemas en el makefile que o yo no entiendo muy bien o me está dando mas problemas que un hijo tonto.

Re: Problema con el Linker "reubicación truncada para ajusta

Publicado: 24 Jun 2010, 16:05
por m0skit0
Eso es porque los datos tienen que estar alineados a palabra (32-bits, o múltiplo de 4) en MIPS, sino te daría error. Lo que no sé es por qué no te lo hacía automáticamente el compilador...