56

基本的 Google 搜索bigobj 问题表明,很多人都遇到了致命错误 C1128:“节数超出目标文件格式限制:使用 /bigobj 编译”。如果大量使用 C++ 模板库(如Boost 库CGAL 库),则该错误更有可能发生。

这个错误很奇怪,因为它为自己提供了解决方案:设置编译器标志/bigobj

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

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

4

2 回答 2

48

该文档确实提到了一个重要缺点/bigobj

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

因此,默认设置此选项将限制可以使用生成的目标文件的链接器的数量。最好根据需要激活它。

于 2013-02-27T11:25:39.417 回答
5

为什么默认情况下没有设置该标志?使用该标志必须受到惩罚,否则它将默认设置。

我的快速非正式实验显示 .obj 文件/bigobj比没有时大 2% 左右。所以这是一个很小的惩罚,但它不是零。

有人提交了功能请求以使其/bigobj成为默认值;请参阅https://developercommunity.visualstudio.com/t/Enable-bigobj-by-default/1031214

于 2021-10-16T04:39:43.740 回答