2017-09-05 118 views
3

我的(非常大)C++项目已经发展到一个点,在尝试编译我的项目时出现C1060: compiler is out of heap space错误。在Visual Studio 2017中使用64位Visual C++工具集

我在64位Windows 10机器上编译,但似乎Visual Studio正在使用32位工具集编译我的项目(请参见下面的截图)。

32 bit compiler driver

C1060 help page问我使用64位的工具集,但提供的链接了解如何只用命令行编译时启用了会谈。

是否有任何方法来设置项目属性或Visual Studio 2017中的其他内容,告诉它使用64位编译器工具集(它已经安装在我的机器上)?

+3

使*编译器*超过3 GB的地址空间在我看来是一个病态代码库的症状......如果您正确地对其进行模块化,每个翻译单元应该可以管理。 –

+0

@MatteoItalia我同意,大部分代码都在一个翻译单元中,包含很多模板和标题,而且很麻烦。但现在,我没有时间折叠代码库。 – Bernard

+0

由于一些奇怪的原因,当我使用constant_not = std :: bool_constant <!(TBoolConstant :: value)>;定义了'template 时,编译器在我有一个'constant_not {}'。如果我使用constant_not = std :: bool_constant <!bool(TBoolConstant :: value)>;将定义更改为'template ,则内存降至300MB。可能是一个编译器错误,但我将不得不做更多的测试。 – Bernard

回答

3

这是我是如何做到的Visual Studio 2017年使用的x64工具集,按照this答案:

打开用你喜欢的文本编辑器.vcxproj文件,找到这一行:

<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> 

然后加入这紧接着它:

<PropertyGroup> 
    <PreferredToolArchitecture>x64</PreferredToolArchitecture> 
</PropertyGroup> 

答案是为Visual Studio 2013,但它也适用于2017年。

附加说明:但事实证明,这并没有真正解决我的问题。 64位工具集耗尽了我机器上的所有内存,并迫使我需要重新启动。当我回滚代码的最新更改时,它使用〜2.8GB编译32位编译器,使用〜4.2GB编译64位编译器(在冻结我的任务管理器之前,最新代码消耗〜6.4GB)我的8GB机器)。我将仔细研究新代码并试图找出为什么需要更多内存。

相关问题