Como fazer com que o Visual Studio use o conjunto de ferramentas nativo amd64

Como posso obter o Visual Studio 2012 para usar o conjunto de ferramentas amd64 nativo, em vez do compilador cruzado x86_amd64 padrão?

Eu estou construindo uma grande biblioteca que faz com que o vinculador fique sem memory ao fazer otimização de programa inteiro e geração de código de tempo de link.

Eu encontrei dois posts mais antigos ( aqui e aqui ) fazendo esta mesma pergunta, mas sem respostas ainda. A Microsoft fornece documentação sobre como especificar o conjunto de ferramentas na linha de comando , mas não no IDE.

Você precisa definir a variável de ambiente “_IsNativeEnvironment” como “true” antes de iniciar o IDE do Visual Studio 2012:

set _IsNativeEnvironment=true start "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe" your_solution.sln 

Para o Visual Studio 2013, o nome da variável de ambiente é diferente:

 set PreferredToolArchitecture=x64 sbm start "C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe" your_solution.sln 

Tenha em atenção que esta técnica não funciona se a versão do IDE não corresponder à versão do conjunto de ferramentas. Ou seja, se você usar o VS2013 IDE configurado para executar o compilador VS2012, estará sem sorte. Mas essa combinação é incomum.

Aqui estão alguns links para mais informações:

diferença entre VS12 e VS13

como incorporar PreferredToolArchitecture no projeto no VS13

Há outro método de forçar o uso do vinculador de 64 bits em uma base por projeto para o Visual Studio 2013. Edite seu arquivo .vcxproj e insira o seguinte após a linha :

    x64  

Se o seu objective é usar o ambiente nativo em vez de especificamente o amd64_x86 , você pode definir a propriedade UseNativeEnvironment no seu arquivo de projeto:

  true  

(Eu adicionei com sucesso ao PropertyGroup “Globals”.)

Você pode verificar qual conjunto de ferramentas está sendo usado adicionando a opção de compilador /Bv . Exemplo de saída está abaixo. Observe que o diretório toolchain aparece após bin\ ( amd64_x86 neste caso).

 2>ClCompile: 2> Compiler Passes: 2> C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64_x86\CL.exe: Version 18.00.31101.0 2> C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64_x86\c1.dll: Version 18.00.31101.0 2> C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64_x86\c1xx.dll: Version 18.00.31101.0 2> C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64_x86\c2.dll: Version 18.00.31101.0 2> C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64_x86\link.exe: Version 12.00.31101.0 2> C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64\mspdb120.dll: Version 12.00.31101.0 2> C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64_x86\1033\clui.dll: Version 18.00.31101.0