2017-09-05 2 views
3

내 프로젝트를 컴파일하려고 할 때 내 (상당히 큰) C++ 프로젝트가 C1060: compiler is out of heap space 오류가 발생하는 지점으로 증가했습니다.Visual Studio에서 64 비트 Visual C++ Toolset 사용 20130

64 비트 Windows 10 컴퓨터에서 컴파일 중이지만 Visual Studio에서 32 비트 도구 세트로 프로젝트를 컴파일하고있는 것으로 보입니다 (아래 스크린 샷 참조). C1060 help page

32 bit compiler driver

는 64 비트 도구 세트를 사용하는 저를 요구하지만, 링크는 명령 줄로 컴파일 할 때 그것을 사용하는 방법에 대한 이야기를 제공했다.

이미 컴퓨터에 설치된 64 비트 컴파일러 도구 집합을 사용하도록 Visual Studio 2017에서 프로젝트 속성이나 다른 것을 설정하는 방법이 있습니까?

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

하는 것은 다음 추가 :이 줄을 찾아

열기 선호하는 텍스트 편집기로 .vcxproj 파일 :

+3

* 컴파일러가 3GB의 주소 공간을 초과하면 병적 인 코드 기반 증상이 생깁니다. 프로젝트 전체의 크기가 중요하지는 않습니다. 각 모듈을 적절하게 모듈화해야합니다. 다루기 쉽다. –

+0

@MatteoItalia 나는 대부분의 코드가 많은 템플릿과 헤더를 가진 하나의 번역 단위에 있다는 점에 동의한다. 그러나 지금은 코드베이스를 굴절시킬 시간이 없습니다. – Bernard

+0

이상한 이유로, constant_not = std :: bool_constant ;를 사용하여'template 템플릿을 정의했을 때 컴파일러는'constant_not {}'. constant_not = std :: bool_constant ;를 사용하여 정의를'template 로 변경하면 메모리는 매우 관리하기 쉬운 300MB로 떨어집니다. 아마도 컴파일러 버그 일지 모르지만 더 많은 테스트를해야 할 것입니다. – Bernard

답변

3

이 내가 this 대답에 따라, 비주얼 스튜디오 2017를 사용하여 64 툴셋 만든 방법입니다 바로 뒤에 :

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

그 대답은 Visual Studio 2013이지만 2017에도 적용됩니다.

추가 참고 : 그러나 이것이 실제로 내 문제를 해결하지 못했음이 밝혀졌습니다. 64 비트 툴셋은 내 컴퓨터의 모든 메모리를 사용하여 재부팅해야했습니다. 코드에 대한 최신 변경 사항을 롤백하면 32 비트 컴파일러의 경우 ~ 2.8GB를 사용하여 컴파일되고 64 비트 컴파일러의 경우 ~ 4.2GB를 사용하여 컴파일됩니다 (최신 코드는 ~ 6.4GB를 소모하여 내 작업 관리자를 내 8 기가 바이트 기계). 새로운 코드를 살펴보고 왜 더 많은 메모리가 필요한지 알아 내려고 노력할 것입니다.

관련 문제