Compartir a través de


Error de las herramientas del vinculador LNK2004

desbordamiento de corrección relativo de gp en "target"; la sección corta "section" es demasiado grande o está fuera de intervalo.

Observaciones

La sección era demasiado grande.

Para resolver este error, reduzca el tamaño de la sección corta, ya sea colocando explícitamente los datos en las secciones largas a través de #pragma section(".sectionname", read, write, long) y usando __declspec(allocate(".sectionname")) en declaraciones y definiciones de datos. Por ejemplo,

#pragma section(".data$mylong", read, write, long)
__declspec(allocate(".data$mylong"))
char    rg0[1] = { 1 };
char    rg1[2] = { 1 };
char    rg2[4] = { 1 };
char    rg3[8] = { 1 };
char    rg4[16] = { 1 };
char    rg5[32] = { 1 };

También puede mover datos agrupados lógicamente a su propia estructura que será una colección de datos superior a 8 bytes que el compilador asignará en una sección de datos larga. Por ejemplo,

// from this...
int     w1  = 23;
int     w2 = 46;
int     w3 = 23*3;
int     w4 = 23*4;

// to this...
struct X {
    int     w1;
    int     w2;
    int     w3;
    int     w4;
} x  = { 23, 23*2, 23*3, 23*4 };

Este error precede al error irrecuperable LNK1165.