什么是Windows工具包?它们是如何工作的? 在VisualStudio中在Windows上开发C++项目时,VisualStudio版本将有自己的C和C++库版本,并且您的项目将引用Windows SDK的特定版本,以便访问用于访问Win32平台的头文件。如果安装了多个版本的Windows SDK,则会有一个涉及环境变量的复杂系统,使您能够选择默认情况下使用哪个版本的Windows SDK Visual Studio

什么是Windows工具包?它们是如何工作的? 在VisualStudio中在Windows上开发C++项目时,VisualStudio版本将有自己的C和C++库版本,并且您的项目将引用Windows SDK的特定版本,以便访问用于访问Win32平台的头文件。如果安装了多个版本的Windows SDK,则会有一个涉及环境变量的复杂系统,使您能够选择默认情况下使用哪个版本的Windows SDK Visual Studio,c++,windows,winapi,visual-studio-2012,visual-studio-2015,C++,Windows,Winapi,Visual Studio 2012,Visual Studio 2015,这不是很好,要让它正常工作需要一点挖掘,但它只起到了作用 刚刚从VS2012升级到VS2015,在我看来,无论这个系统被替换成什么,要么彻底崩溃了,要么我就是不理解它 > P>升级一个简单的VS2012 C++控制台应用程序,其中包括CONIO .H到VS2015中断,没有错误报告。为什么?conio.h不再位于Visual Studio C/C++库中,而是位于Windows Kit 10中,升级项目不会重新安装所使用的SDK(如您所料) LI> < P>在VS2015中创建一个全新的He

这不是很好,要让它正常工作需要一点挖掘,但它只起到了作用

刚刚从VS2012升级到VS2015,在我看来,无论这个系统被替换成什么,要么彻底崩溃了,要么我就是不理解它

> P>升级一个简单的VS2012 C++控制台应用程序,其中包括CONIO .H到VS2015中断,没有错误报告。为什么?conio.h不再位于Visual Studio C/C++库中,而是位于Windows Kit 10中,升级项目不会重新安装所使用的SDK(如您所料)

<> LI> < P>在VS2015中创建一个全新的Hello World C++应用程序,C++项目包括目录继承$(Vcx包含Debug路径)和$(WiWOWSDKKY包含Debug路径)。(WindowsSDK\u IncludePath)从C:\Program Files(x86)\Windows Kits\8.1中提取头,而$(VC\u IncludePath)从C:\Program Files(x86)\Windows Kits\10中提取头

因此,简单的项目升级失败,升级时未报告任何错误。Clean new console项目同时从两个不同的Windows工具包安装中提取标题,现在我在C:\Program Files(x86)\Microsoft SDK和C:\Program Files(x86)\Windows工具包下有了8.1和10的条目。Windows Kit 8.1包含Win32和WinRt标头,而Windows Kit 10包含C/C++标头

我是否有一个错误配置和损坏的安装,或者这是混乱的应该是什么

如果这一团糟是它应该是什么样子,那么它打算如何运作呢?我曾尝试在MSDN中搜索有关Windows工具包的信息,但除了有关Windows驱动程序工具包的内容外,什么也没找到。以前,Windows驱动程序工具包与以前完全不同,但我不知道它是否仍然存在


是否有任何文档是我遗漏的,可以解释此库配置背后的基本原理以及打算如何使用它?

我已经多次遇到此问题的几个不同变体,这些问题解决了从VS2012升级到VS2015的项目的头文件和库依赖关系

Hans在回答我的问题时的评论确实解决了标题的问题,但是在遇到库依赖项的相同问题之后,我有了一个可能更简单的解决方案,它也适用于失败的库依赖项解析

在VS2015中打开VS2012项目时,不会执行自动升级。打开“项目属性”并将“常规->平台”工具集更改为Visual Studio 2015(v140),可能会再现我的原始问题中描述的标题解析错误的变体,或者再现不同的库依赖项解析错误

我发现解决这些问题的最简单方法是打开项目属性并转到VC++目录->包含目录。在您自己添加到项目中的任何路径中,您可能会发现$(VCInstallDir)\include$(vInstallDir\atlmfc\include;$(WindowsSDK\u IncludePath)

单击路径以显示下拉列表,然后单击编辑,这将显示一个包含三个部分的对话框,从上到下,显式定义的路径、计算的路径和继承的路径。在最底部是一个复选框“继承自父项或项目默认值”,我总是发现最初未选中该复选框

从显式定义的包含路径中删除上述$(VCInstallDir)\include;$(VCInstallDir\atlmfc\include;$(WindowsSDK\u IncludePath)项,并选择“从父级或项目默认值继承”设置。这将解决任何头文件依赖性问题

如果还存在库引用问题,请对库目录项执行相同的操作,编辑设置,删除显式表格项,然后选择“从父项或项目默认值继承”。(即使您没有看到任何链接器错误,也最好这样做,否则在链接到VS2012的库时,您可能会使用VS2015的平台工具集编译器选项)

我不知道为什么这对我来说是一团糟,因为我没有遇到任何其他人有类似的问题,我以前升级VisualStudio解决方案时没有遇到过问题


<>我还没有发现为什么Windows的一些版本现在包含Windows平台头或C++库头,当以前SDK总是包含平台头,而C++头始终是部分或VisualStudio安装时,看起来像这样的改变应该有一个关于某个或某个其他文档的DeV博客。但只要它有效,我就不在乎太多


我希望这能帮助一些人。

微软有一个非常困难和苛刻的客户。它的名字是微软。政治很无聊,不能解决任何人的问题。你只需要修复项目>属性>VC++目录>包含目录。将其还原为$(VC_IncludePath);$(WindowsSDK_IncludePath)计算结果为5个目录。这可能会破坏您的项目,请改用C/C++>General>Additional Include Directory设置。很抱歉,我很难理解这其中哪些部分是您需要解决的问题,哪些部分只是您抱怨的问题。如果您能够提供一个简单的samp这可能会有帮助。我试图了解Windows工具包与旧Windows SDK的关系,以及如何配置项目以使用不同版本的SDK。这是一个Visual Studio项目