Share via


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.

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.