如何使Visual Studio使用本机amd64工具链

Ky *_*gel 30 c++ 64-bit compilation visual-studio

如何让Visual Studio 2012使用本机amd64工具链,而不是默认的x86_amd64交叉编译器?

我正在构建一个大型库,在进行整个程序优化和链接时代码生成时会导致链接器内存不足.

我找到两个较旧的帖子(这里这里)提出同样的问题,但还没有答案.Microsoft提供了有关如何在命令行上指定工具链但不在IDE中指定工具链的文档.

the*_*ill 36

还有另一种方法可以在Visual Studio 2013的基础上强制使用64位链接器.编辑.vcxproj文件并在行后面插入以下内容<Import...Microsoft.Cpp.Defaults:

  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
  <PropertyGroup>
    <PreferredToolArchitecture>x64</PreferredToolArchitecture>
  </PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

  • https://connect.microsoft.com/VisualStudio/feedback/details/800059/isnativeenvironment-true-no-longer-works-on-visual-studio-2013-rc (2认同)

小智 34

在启动Visual Studio 2012 IDE之前,需要将环境变量"_IsNativeEnvironment"设置为"true":

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

对于Visual Studio 2013,环境变量的名称不同:

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

请注意,如果IDE的版本与工具链的版本不匹配,则此技术不起作用.也就是说,如果你使用VS2013 IDE配置运行VS2012编译器,那你就不走运了.但这种组合并不常见.

以下是一些链接以获取更多信息:

VS12和VS13之间的区别

如何在Windows13中将PreferredToolArchitecture嵌入到项目中

  • `set PreferredToolArchitecture = x64`也适用于VS2017,谢谢! (7认同)
  • 使用 CMake 时,请在指定 Visual Studio 生成器时使用“host=x64”。 (2认同)

Ros*_*ina 8

如果您的目标是使用本环境而不是具体使用amd64_x86,则可以UseNativeEnvironment在项目文件中设置该属性:

<PropertyGroup>
  <UseNativeEnvironment>true</UseNativeEnvironment>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

(我已成功将其添加到"Globals"PropertyGroup.)

您可以通过添加/Bv编译器选项来检查正在使用的工具链.示例输出如下.请注意,工具链目录显示在bin\(amd64_x86在本例中)之后.

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
Run Code Online (Sandbox Code Playgroud)