【发布时间】:2016-08-18 22:57:56
【问题描述】:
在过去,在 Visual Studio 中在 Windows 上开发 C++ 项目时,您的 Visual Studio 版本将拥有自己的 C 和 C++ 库版本,并且您的项目将引用特定版本的 Windows SDK 以便访问用于访问 Win32 平台的标头。如果您安装了多个版本的 Windows SDK,则会有一个涉及环境变量的复杂系统,您可以选择默认使用哪个版本的 Windows SDK Visual Studio。
这不是很好,要让它正常工作需要一些挖掘,但它确实可以工作。
刚刚从 VS2012 升级到 VS2015,在我看来,无论这个系统被替换成什么,要么彻底坏了,要么我就是不明白。
将包含 conio.h 的简单 VS2012 C++ 控制台应用程序升级到 VS2015 会中断,但未报告错误。为什么? conio.h 不再位于 Visual Studio C/C++ 库中,而是现在位于 Windows Kit 10 中,升级项目不会重新安装使用的 SDK(如您所料)。
-
在 VS2015 中创建一个全新的 Hello World C++ 应用程序,C++ 项目包括继承 $(VC_IncludePath) 和 $(WindowsSDK_IncludePath) 的目录。 $(WindowsSDK_IncludePath) 从 C:\Program Files (x86)\Windows Kits\8.1 拉入标头,而 $(VC_IncludePath) 从 C:\Program Files (x86)\Windows Kits\10 拉入标头。
李>
如此简单的项目升级失败,升级时没有报告错误。清理新的控制台项目同时从 2 个不同的 Windows Kit 安装中提取标头,现在我在 C:\Program Files (x86)\Microsoft SDKs 和 C:\Program Files (x86)\Windows Kits 下有 8.1 和 10 的条目。 Windows Kit 8.1 包含 Win32 和 WinRt 标头,而 Windows Kit 10 包含 C/C++ 标头。
我是否有错误配置和损坏的安装,还是应该是这样的混乱?
如果这个混乱是它应该的样子,它打算如何工作?我尝试在 MSDN 上搜索有关 Windows 工具包的信息,但除了有关 Windows 驱动程序工具包的信息外,一无所获,它曾经是完全不同的东西,但我不知道它是否仍然如此。
是否有任何我错过的文档解释了这个库配置背后的基本原理以及它的使用方式?
【问题讨论】:
-
微软有一个非常困难和苛刻的客户。它的名字是微软。政治很无聊,不能解决任何人的问题。您只需要修复 Project > Properties > VC++ Directories > Include Directories。将其恢复为 $(VC_IncludePath);$(WindowsSDK_IncludePath) ,其计算结果为 5 个目录。这可能会破坏您的项目,请改用 C/C++ > General > Additional Include Directories 设置。
-
很抱歉,我很难理解这其中的哪些部分是您需要解决的问题,哪些部分只是您抱怨的问题。如果您能够提供一个简单的代码示例,那可能会有所帮助。
-
我试图了解 Windows 工具包与旧 Windows SDK 的关系,以及如何配置项目以使用它们的不同版本。这是一个 Visual Studio 项目配置问题,而不是代码问题。如果您不理解或不感兴趣,那很好,但请不要因为您不感兴趣而投票结束我的问题,因为如果确实出现了一个好的答案,那对其他人仍然非常有用。
-
如果您希望这对其他人有所帮助,请确保您的问题是明确的(请参阅How to Ask)。正如目前所写的那样,您所追求的并不完全清楚。如何正确地将解决方案从 VS 2012 升级到 2015?如何验证您的构建系统是否设置正确?应如何使用 Windows SDK 标头?如何使用特定的 SDK 构建?是否有可用的文档?
标签: c++ windows winapi visual-studio-2012 visual-studio-2015