What are Windows Kits and how do they work? What are Windows Kits and how do they work? windows windows

What are Windows Kits and how do they work?


I've bumped into several different variations of this issue a few times now, with issues resolving both header files and library dependencies on projects upgraded from VS2012 to VS2015.

Hans' comment in reply to my question does indeed fix the issue for headers, but after encountering the same problem for library dependencies I have what might be a simpler solution that works for failed library dependency resolution too.

On opening a VS2012 project in VS2015 no automatic upgrade is performed. Opening the project properties and changing General -> Platform Toolset to Visual Studio 2015 (v140) will likely reproduce either a variant of the header resolution error described in my original question or a different library dependency resolution error.

The easiest way I've found to fix these is to open project properties and go to VC++ Directories -> Include Directories. In amongst any paths you may have added to your project yourself you will probably find $(VCInstallDir)\include;$(VCInstallDir\atlmfc\include;$(WindowsSDK_IncludePath)

Click the path to display the dropdown and click edit, this will display a dialog with three sections, from top to bottom, explicitly defined paths, evaluated paths and inherited paths. At the very bottom is a checkbox 'Inherit from parent or project defaults' which I've always found to be initially unchecked.

From the explicitly defined include paths delete the $(VCInstallDir)\include;$(VCInstallDir\atlmfc\include;$(WindowsSDK_IncludePath) entries described above and select the 'Inherit from parent or project defaults' setting. That should resolve any header file dependency issues.

If you also have library referencing issues do the same thing with the Library Directory entries, edit the settings, remove the explicit plaform entries and select 'Inherit from parent or project defaults'. (It might be a good idea to do this even if you aren't seeing any linker errors else you might end up using platform toolset compiler option for VS2015 while linking to libraries for VS2012).

I don't know why this is screwed up for me when I haven't come across anyone else having similar issues, I haven't had problems upgrading Visual Studio solutions before.

I also haven't discovered why some versions of Windows Kits now contain either Windows platform headers or C++ library headers, when previously SDK's always contained platform headers while C++ headers were always part or the Visual Studio installation. It seems like a change like this should have a dev blog about it somewhere or some other documentation. But as long as it works then I don't care too much.

I hope this helps somebody.