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
.