2013-02-27 75 views
34

基本的谷歌搜索bigobj issue表明,很多人都经历了Fatal Error C1128:“人数超过目标文件格式的限制部分组成:编译/ bigobj”。如果大量使用C++模板库(如Boost librariesCGAL libraries),则该错误有更多机会发生。处罚的MSVS编译器标志/ bigobj

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

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

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

回答

28

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

的接头是附带的Visual C++ 2005之前,无法读取.obj文件制作与/bigobj该 。

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

+2

我觉得这只是答案的一部分。为什么gcc或clang不会发生这个问题?他们是否有类似于'/ bigobj'的行为直接内置和_always-on_? – Ela782 2018-01-14 17:05:58