对于标准 C++,我应该将 Windows 8.1 SDK 或 Windows 10 SDK 与 Visual Studio 2017 一起使用吗?
Posted
技术标签:
【中文标题】对于标准 C++,我应该将 Windows 8.1 SDK 或 Windows 10 SDK 与 Visual Studio 2017 一起使用吗?【英文标题】:Should I use Windows 8.1 SDK or Windows 10 SDK with Visual Studio 2017 for standard C++? 【发布时间】: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++。 【参考方案1】:这个 Microsoft page 建议您使用哪个通常并不重要。特别是,它说,
当您部署应用程序时,您可以使用 /MT 选项链接它,以完全避免与 CRT 相关的动态链接库,并且在大多数情况下,您甚至不需要可再分发的运行时。然后所有工具集功能都存在于您的模块中,不需要任何其他依赖项。
【讨论】:
Windows SDK 不是“CRT 相关的动态链接库”。您不能静态链接 Windows 操作系统功能(少数例外,例如strsafe.h
中的功能)。以上是关于对于标准 C++,我应该将 Windows 8.1 SDK 或 Windows 10 SDK 与 Visual Studio 2017 一起使用吗?的主要内容,如果未能解决你的问题,请参考以下文章
在Windows运行时8.1中连接到FT232R USB UART设备
如何在 C++ 运行时组件中的 Windows Phone 8.1 XAML 应用程序中使用 C++ dll