2017-09-05 17 views
3

プロジェクトをコンパイルしようとすると、大きな(かなり大きい)C++プロジェクトが、C1060: compiler is out of heap spaceというエラーが発生するまでに成長しました。Visual Studioで64ビットVisual C++ツールセットを使用する

私は64ビットのWindows 10マシンでコンパイルしていますが、Visual Studioが32ビットツールセットでプロジェクトをコンパイルしているようです(下記のスクリーンショットを参照)。 C1060 help page

32 bit compiler driver

は、64ビットツールセットを使用するように私に尋ねるが、リンクは、コマンドラインでコンパイルするときにそれを有効にする方法について協議を提供します。

既にプロジェクトにインストールされている64ビットコンパイラツールセットを使用するようにVisual Studio 2017にプロジェクトプロパティなどを設定する方法はありますか?

+3

* 3GBのアドレス空間を超えると、病理コードベースの症状になります。プロジェクト全体の大きさは問題ありません。各翻訳単位を適切にモジュール化する必要があります管理しやすい –

+0

@MatteoItalia私が同意するのは、コードの大半は1つの翻訳単位に多くのテンプレートとヘッダーが含まれていることに同意します。しかし、今のところ、私はコードベースを屈折させる時間がありません。 – Bernard

+0

いくつかの奇妙な理由で、私がconstant_not = std :: bool_constant <!(TBoolConstant :: value)>;を使用して 'template を定義すると、' constant_not {} '。 constant_not = std :: bool_constant <!bool(TBoolConstant :: value)>;を使用して定義を 'template に変更すると、メモリは非常に扱いやすい300MBに落ちます。おそらくコンパイラのバグですが、もっとテストをしなくてはなりません。 – Bernard

答えて

3

これは私がthis答えは1として、x64のツールセットを使用して2017年のVisual Studioを作った方法です。この行を見つけ、

開き、お気に入りのテキストエディタで.vcxprojファイル:

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

その後追加これは直後に:

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

この回答はVisual Studio 2013のものですが、2017でも有効です。

追加の注意:しかし、これは実際に私の問題を解決していないことが判明しました。 64ビットのツールセットは私のマシン上のすべてのメモリを使い果たし、再起動が必要でした。コードの最新の変更をロールバックすると、32ビットコンパイラでは〜2.8GBを使用してコンパイルされ、64ビットコンパイラでは〜4.2GBを使用してコンパイルされます(最新のコードは〜6.4GBで消費されてから、私の8GBマシン)。私は新しいコードを見て、もっと多くのメモリが必要な理由を理解しようとします。

関連する問題