Jak sprawić, by Visual Studio korzystało z natywnego łańcucha narzędzi amd64

Jak mogę zmusić Visual Studio 2012 do używania natywnego zestawu narzędzi amd64,a nie domyślnego kompilatora x86_amd64?

Buduję dużą bibliotekę, która powoduje, że linkerowi kończy się pamięć podczas optymalizacji całego programu i generowania kodu czasu łącza.

Znalazłem dwa Starsze Posty ( tutaj i tutaj) zadając to samo pytanie, ale na razie Brak odpowiedzi. Microsoft udostępnia dokumentację, jak określić toolchain w wierszu poleceń , ale Nie w IDE.

Author: Community, 2013-11-06

3 answers

Musisz ustawić zmienną środowiskową " _isnativeenvironment "na " true"przed uruchomieniem Visual Studio 2012 IDE:

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

W Visual Studio 2013 nazwa zmiennej środowiskowej jest inna:

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

Uważaj, że ta technika nie działa, jeśli Wersja IDE nie pasuje do wersji toolchaina. Oznacza to, że jeśli używasz VS2013 IDE skonfigurowanego do uruchamiania kompilatora VS2012, masz pecha. Ale taka kombinacja jest rzadka.

Oto kilka linków dodatkowe informacje:

Różnica między VS12 i VS13

Jak osadzić PreferredToolArchitecture w projekcie w VS13

 27
Author: Denis Gurchenkov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-21 20:22:11

Istnieje inna metoda wymuszania użycia 64-bitowego linkera na podstawie projektu dla Visual Studio 2013. Edytuj swoje .plik vcxproj i Wstaw po linii <Import...Microsoft.Cpp.Defaults:

  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
  <PropertyGroup>
    <PreferredToolArchitecture>x64</PreferredToolArchitecture>
  </PropertyGroup>
 29
Author: the_mandrill,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-02 15:06:38

Jeśli twoim celem jest użycie środowiska natywnego , a nie konkretnie amd64_x86, możesz ustawić właściwość UseNativeEnvironment w pliku projektu:

<PropertyGroup>
  <UseNativeEnvironment>true</UseNativeEnvironment>
</PropertyGroup>

(z powodzeniem dodałem go do grupy" Globals " PropertyGroup.)

Możesz sprawdzić, który toolchain jest używany przez dodanie opcji kompilatora /Bv. Przykładowe wyjście znajduje się poniżej. Zauważ, że katalog toolchain pojawia się po bin\ (amd64_x86 w tym przypadku).

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
 8
Author: Ross Bencina,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-18 06:11:50