Chyba linkerů LNK2004
gp relative fixup overflow to 'target'; krátký oddíl "section" je příliš velký nebo je mimo rozsah.
Oddíl byl příliš velký.
Pokud chcete tuto chybu vyřešit, zmenšete velikost krátkého oddílu tak, že explicitně vložíte data do dlouhých oddílů prostřednictvím #pragma section(".sectionname", čtení, zápis, long) a použití __declspec(allocate(".sectionname"))
definic a deklarací dat. Příklad:
#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 };
Logicky seskupená data můžete také přesunout do vlastní struktury, která bude kolekcí dat větších než 8 bajtů, které kompilátor přidělí v oddílu s dlouhými daty. Příklad:
// 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 };
Za touto chybou následuje závažná chyba LNK1165
.