web-dev-qa-db-fra.com

Pénalité du drapeau du compilateur MSVS / bigobj

La recherche Google de base problème bigobj montre que beaucoup de gens connaissent Erreur fatale C1128 : " le nombre de sections a dépassé le format de fichier objet limit: compiler avec/bigobj ". L'erreur a plus de chances de se produire si l'on utilise fortement une bibliothèque de modèles C++, comme Bibliothèques Boost ou Bibliothèques CGAL .

Cette erreur est étrange, car elle donne la solution à elle-même: définissez le indicateur du compilateur /bigobj !

Voici donc ma question: pourquoi ce drapeau n'est-il pas défini par défaut? Il doit y avoir une pénalité en utilisant ce drapeau, sinon il serait défini par défaut. Cette pénalité n'est pas documentée dans MSDN. Quelqu'un a-t-il une idée?

Je pose la question car je me demande si le système de configuration de CGAL ne devrait pas définir /bigobj par défaut.

43
lrineau

La documentation mentionne un inconvénient important pour /bigobj:

Les éditeurs de liens fournis avant Visual C++ 2005 ne peuvent pas lire les fichiers .obj produits avec /bigobj.

Par conséquent, la définition de cette option par défaut limiterait le nombre d'éditeurs de liens pouvant consommer les fichiers d'objets résultants. Mieux vaut l'activer au besoin.

37
Frédéric Hamidi