Linkertoolfehler LNK2004
gp relative Fixupüberlauf auf 'Ziel'; Der kurze Abschnitt "Abschnitt" ist zu groß oder außerhalb des Bereichs.
Der Abschnitt war zu groß.
Um diesen Fehler zu beheben, verringern Sie die Größe des kurzen Abschnitts, entweder durch explizites Einfügen von Daten in die langen Abschnitte über #pragma Abschnitt (".sectionname", Lesen, Schreiben, Lang) und verwenden __declspec(allocate(".sectionname"))
sie datendefinitionen und Deklarationen. Ein auf ein Objekt angewendeter
#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 };
Sie können auch logisch gruppierte Daten in eine eigene Struktur verschieben, die eine Sammlung von Daten größer als 8 Byte ist, die der Compiler in einem langen Datenabschnitt zuweist. Ein auf ein Objekt angewendeter
// 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 };
Auf diesen Fehler folgt ein schwerwiegender Fehler LNK1165
.