Partager via


Erreur des outils Éditeur de liens LNK2004

gp relative fixup overflow to 'target' ; la section courte 'section' est trop grande ou hors plage.

La section était trop grande.

Pour résoudre cette erreur, réduisez la taille de la section courte, soit en plaçant explicitement des données dans les sections longues via #pragma section(« .sectionname », lecture, écriture, long) et en utilisant __declspec(allocate(".sectionname")) des définitions et déclarations de données. Par exemple,

#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 };

Vous pouvez également déplacer des données regroupées logiquement dans sa propre structure qui sera une collection de données supérieure à 8 octets, que le compilateur allouera dans une section de données longue. Par exemple,

// 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 };

Cette erreur est suivie d’une erreur irrécupérable LNK1165.