2013-02-27 5 views
34

Die grundlegende Google-Suche bigobj issue zeigt, dass viele Menschen erleben die Fatal Error C1128: „Anzahl von Abschnitten Objekt-Dateiformat Grenze überschritten: kompilieren mit/bigobj“. Der Fehler tritt häufiger auf, wenn eine Bibliothek von C++ - Vorlagen verwendet wird, z. B. Boost libraries oder CGAL libraries.Strafe des MSVS Compiler-Flag/bigobj

Dieser Fehler ist seltsam, weil es die Lösung für sich selbst gibt: Setzen Sie die compiler flag /bigobj!

Also hier ist meine Frage: Warum ist das Flag nicht standardmäßig eingestellt? Es muss eine Strafe für die Verwendung dieses Flags sein, andernfalls würde es standardmäßig gesetzt werden. Diese Strafe ist nicht in MSDN dokumentiert. Hat jemand eine Ahnung?

Ich stelle die Frage, weil ich mich frage, ob das Konfigurationssystem von CGAL standardmäßig /bigobj nicht setzen sollte.

Antwort

28

Die Dokumentation hat einen wichtigen Nachteil /bigobj erwähnen:

Linkers, die vor dem Visual C++ 2005 geliefert werden, können nicht lesen OBJ-Dateien, die mit /bigobj produziert wurden.

Wenn Sie diese Option also standardmäßig festlegen, wird die Anzahl der Linker eingeschränkt, die die resultierenden Objektdateien verwenden können. Es ist besser, sie auf Bedarfsbasis zu aktivieren.

+2

Es fühlt sich für mich so an das ist nur ein Teil der Antwort. Warum tritt dieses Problem nicht mit gcc oder clang auf? Haben sie das Verhalten von etwas Ähnlichem wie "/ bigobj" direkt eingebaut und _always-on_? – Ela782