相关疑难解决方法(0)

"目标平台版本"对于VS C++项目意味着什么?

背景

据我所知,在C++项目中:

  • 项目属性=>配置属性=>常规=> 平台工具集
    • 告诉编译器物理编译哪个SDK.
    • 例如:v140将告诉Visual Studio 2015使用最新最好的v8.1 Windows SDK
  • _WIN32_WINNT,WINVERNTDDI_VERSION
    • 根据底层操作系统,SDK功能可以在OS到OS之间具有不同的功能签名.
    • SDK被认为是向后兼容的.1
    • 前面提到的宏使您能够指定要编译的函数的版本.

我的问题

如果我使用以下设置编译我的应用程序:

  • project properties => configuration properties => General => Platform Toolset
    • 设置为:v140_xp(Visual Studio 2015 - Windows XP)
    • 设置告诉编译器使用7.1 SDK,这是有道理的.
  • 内容: StdAfh.h
    • #include <WinSDKVer.h>
    • #define _WIN32_WINNT 0x0501
    • #define WINVER 0x0501
    • #define NTDDI_VERSION 0x05010000
    • #include <SDKDDKVer.h>
    • 宏告诉编译器使用哪些函数签名,这是有道理的.

从我可以告诉,它看起来像目标平台版本是suposed是一种替代_WIN32_WINNT,WINVERNTDDI_VERSION宏.奇怪的是,通过上面的配置,您可以将目标平台版本设置为199...并且编译器不会生成任何错误或警告.

这本让我纳闷:什么是目标平台版本呢?

附加背景

  • 编译器:Visual Studio …

sdk visual-c++ visual-studio-2015

11
推荐指数
1
解决办法
6338
查看次数

使用VS2010的msbuild进行构建时,是否可以从命令行设置平台工具集?

当我从命令行使用msbuild构建VS2010时,是否可以从命令行将平台工具集更改为v90(即Visual Studio 2008工具链),而无需编辑vcxproj文件?

我目前在我的构建脚本中使用以下命令行:

mysystemf("msbuild %s.vcxproj /t:rebuild /p:configuration=release,platform=%s", prjname, platform);
Run Code Online (Sandbox Code Playgroud)

c++ msbuild command-line visual-studio-2010

8
推荐指数
1
解决办法
1万
查看次数