MSVS编译器标志/ bigobj的惩罚

时间:2013-02-27 11:10:16

标签: c++ visual-studio linker-errors

基本的Google搜索bigobj issue显示很多人遇到Fatal Error C1128:“部分超出了对象文件格式限制:使用/ bigobj 编译”。如果大量使用C ++模板库(如Boost librariesCGAL libraries),则错误发生的可能性更大。

这个错误很奇怪,因为它为自己提供了解决方案:设置compiler flag /bigobj

所以这是我的问题:为什么默认情况下不设置该标志?使用该标志必须有惩罚,否则默认设置。 MSDN中没有记录该惩罚。有人有线索吗?

我问这个问题,因为我想知道CGAL的配置系统是否应该默认设置/bigobj

1 个答案:

答案 0 :(得分:32)

文档确实提到/bigobj的一个重要缺点:

  

在Visual C ++ 2005之前发布的链接器无法读取.obj文件   用/bigobj生成的。

因此,默认情况下设置此选项会限制可以使用生成的对象文件的链接器数量。最好在需要的基础上激活它。