【发布时间】:2017-09-05 13:30:36
【问题描述】:
我的(相当大的)C++ 项目已经发展到在尝试编译我的项目时出现C1060: compiler is out of heap space 错误的地步。
我在 64 位 Windows 10 机器上编译,但似乎 Visual Studio 正在使用 32 位工具集编译我的项目(见下面的屏幕截图)。
C1060 help page 要求我使用 64 位工具集,但提供的链接讨论了如何在仅使用命令行编译时启用它。
有没有办法在 Visual Studio 2017 中设置项目属性或其他内容,以告诉它使用 64 位编译器工具集(已安装在我的机器上)?
【问题讨论】:
-
让 编译器 超过 3 GB 的地址空间在我看来是病态代码库的症状......你的项目有多大并不重要,如果你把它模块化,每个翻译单元都应该是可管理的。
-
@MatteoItalia 我同意,大部分代码都在一个带有大量模板和标题的翻译单元中,而且有点混乱。但是现在,我没有时间重构代码库。
-
出于某种奇怪的原因,当我定义了
template <typename TBoolConstant> using constant_not = std::bool_constant<!(TBoolConstant::value)>;时,当我有一个constant_not<std::true_type>{}时,编译器变得非常耗内存。如果我将定义更改为template <typename TBoolConstant> using constant_not = std::bool_constant<!bool(TBoolConstant::value)>;,内存将降至非常易于管理的 300MB。可能是编译器错误,但我将不得不做更多测试。
标签: visual-studio visual-studio-2017