Comment faire pour Visual Studio utilisez la chaîne d'outils natif amd64

Comment puis-je obtenir Visual Studio 2012 pour utiliser la chaîne d'outils native amd64, plutôt que le compilateur croisé x86_amd64 par défaut?

je construis une grande bibliothèque qui provoque le linker à s'épuiser de mémoire en faisant l'optimisation de programme entier et la génération de code de temps de lien.

j'ai trouvé deux billets plus anciens ( ici et ici ) qui posaient la même question, mais aucune réponse pour le moment. Microsoft fournit documentation sur la façon de spécifier la chaîne d'outils sur la ligne de commande , mais pas dans L'IDE.

25
demandé sur Community 2013-11-06 23:11:50

3 réponses

vous devez définir la variable d'environnement "_isnativeenvironnement" à "true" avant de commencer Visual Studio 2012 IDE:

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

pour Visual Studio 2013, le nom de la variable d'environnement est différent:

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

Attention, cette technique ne fonctionne pas si la version de L'IDE ne correspond pas à la version de la chaîne d'outils. C'est-à-dire, si vous utilisez L'IDE VS2013 configuré pour exécuter le compilateur VS2012, vous n'avez pas de chance. Mais de telles la combinaison est rare.

Voici quelques liens pour plus d'informations:

différence entre VS12 et VS13

"

comment intégrer L'architecture Preferred Tool dans le projet en VS13

27
répondu Denis Gurchenkov 2014-05-21 20:22:11

il y a une autre méthode pour forcer L'utilisation du linker 64 bits sur une base par projet pour Visual Studio 2013. Modifier votre .VCXPROJ et insérer ce qui suit après la ligne <Import...Microsoft.Cpp.Defaults :

  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
  <PropertyGroup>
    <PreferredToolArchitecture>x64</PreferredToolArchitecture>
  </PropertyGroup>
29
répondu the_mandrill 2014-09-02 15:06:38

si votre but est d'utiliser le natif environnement plutôt que spécifiquement amd64_x86 , vous pouvez définir la propriété UseNativeEnvironment dans votre dossier de projet:

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

(Je l'ai ajouté avec succès au groupe de propriété" Globals".)

vous pouvez vérifier quelle chaîne d'outils est utilisée en ajoutant l'option de compilateur /Bv . Exemple de sortie est ci-dessous. Notez que le répertoire de la chaîne d'outils apparaît après bin\ ( amd64_x86 dans ce cas).

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_x8633\clui.dll: Version 18.00.31101.0
8
répondu Ross Bencina 2016-03-18 06:11:50