【问题标题】:Should I use Windows 8.1 SDK or Windows 10 SDK with Visual Studio 2017 for standard C++?对于标准 C++,我应该将 Windows 8.1 SDK 或 Windows 10 SDK 与 Visual Studio 2017 一起使用吗?
【发布时间】:2017-11-14 15:12:19
【问题描述】:

我正在使用 Visual Studio 2017 以标准 C++ 开发控制台应用程序。安装 VS2017 时,我可以同时安装 Win 8.1 SDK 和 Win 10 SDK。 VS2017 似乎默认提供 Win 10 SDK,但我不断遇到配置为使用 Win 8.1 SDK 的项目(例如,MPIR 或在以前版本的 VS 中创建的项目)。因此,我想知道:

  • 哪个 SDK 更适合用于标准 C 和 C++?
  • 能否安全地将使用不同版本 Windows SDK 的库链接在一起?例如,我可以针对 Win 8.1 SDK 编译 MPIR 并在使用 Win 10 SDK 的应用程序中调用它吗?

【问题讨论】:

  • 如果您使用标准 C++ 开发控制台应用程序,则根本不需要或关心已安装的 Windows SDK,因为您从不使用它。
  • @VTT 这是有道理的。除非我不安装 8.1 SDK,否则我无法编译在项目设置中引用它的项目。编译器会抱怨缺少一些头文件。这是一个虚假的依赖项(编译器的怪癖并不重要)吗?
  • 这是因为 Visual C++ 与 Windows SDK 紧密捆绑在一起。但只要你不直接使用它,你就不应该真正关心版本。您实际上可以安装一些第三方编译器并使用它来代替 Visual C++。

标签: c++ visual-studio


【解决方案1】:

这个 Microsoft page 建议您使用哪个通常并不重要。特别是,它说,

当您部署应用程序时,您可以使用 /MT 选项链接它,以完全避免与 CRT 相关的动态链接库,并且在大多数情况下,您甚至不需要可再分发的运行时。然后所有工具集功能都存在于您的模块中,不需要任何其他依赖项。

【讨论】:

  • Windows SDK 不是“CRT 相关的动态链接库”。您不能静态链接 Windows 操作系统功能(少数例外,例如 strsafe.h 中的功能)。
猜你喜欢
  • 2021-12-14
  • 1970-01-01
  • 1970-01-01
  • 2012-07-21
  • 1970-01-01
  • 2017-08-31
  • 1970-01-01
  • 2018-10-18
  • 2016-01-16
相关资源
最近更新 更多