2017-09-05 120 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機器)。我將仔細研究新代碼並試圖找出爲什麼需要更多內存。

相關問題