Schwerwiegender Fehler C1128

Anzahl der Abschnitte überschreitet Objektdateiformatgrenze: Kompilieren mit /bigobj

Eine OBJ-Datei hat die Anzahl der zulässigen Abschnitte überschritten. Hierbei handelt es sich um eine Formatbeschränkung für COFF-Objektdateien.

Das Erreichen dieser Abschnittseinschränkung kann das Ergebnis der Verwendung von /Gy und eines Debugbuilds sein. /Gy bewirkt, dass Funktionen in ihre eigenen COMDAT-Abschnitte verschoben werden. Ein Debugbuild enthält für jede COMDAT-Funktion einen Abschnitt mit Debuginformationen.

C1128 kann auch durch die Verwendung zu vieler Inlinefunktionen verursacht werden.

Um diesen Fehler zu beheben, teilen Sie die Quelldatei in mehrere Quellcodedateien auf, kompilieren sie ohne /Gy, oder kompilieren Sie mit /bigobj (Erhöhen Sie die Anzahl der Abschnitte in . Obj-Datei). Wenn Sie nicht mit /Gy kompilieren, müssen Sie die Optimierungen einzeln angeben, da /O2 und /O1 beide implizieren /Gy.

Kompilieren Sie nach Möglichkeit ohne Debuginformationen.

Möglicherweise benötigen Sie außerdem spezifische Vorlageninstanziierungen in separaten Quellcodedateien, anstatt sie vom Compiler ausgeben zu lassen.

Beim Portieren von Code wird C1128 wahrscheinlich zuerst bei Verwendung des x64-Compilers und viel später mit dem x86-Compiler angezeigt. x64 enthält mindestens 4 Abschnitte, die mit jeder Funktion kompiliert /Gy oder inline aus Vorlagen oder Klasseninline verknüpft sind: Code, pdata und Debuginformationen und möglicherweise xdata. X86 verfügt nicht über die pdata.