SDKDDKVer.h отсутствует, но WinSDK установлен? (проблемы с заголовком C++)

Поэтому я недавно вернулся в VC++ с.NET 4.5 (Visual Studio 2012 professional) из-за различных не относящихся к делу причин на новом ПК, проведя вечность с web dev, python и C#. Мне довольно комфортно с языком в целом, он чертовски красив с точки зрения синтаксиса, и мне нравится свобода управления памятью, указатели и ссылки. Я начинаю снова с "привет миром" вещь и БАМ! Ошибка.

Как и многие другие люди с этой проблемой, я получаю ошибку IntelliSense, когда я пытаюсь скомпилировать и запустить:

cannot open source file "SDKDDKVer.h"" and the fatal error: "error C1083: Cannot open include file: 'SDKDDKVer.h': No such file or directory

У меня также установлена ​​Visual Studio 2010 (C# Express), возможно, это испортило некоторые из моих вещей. Я подтвердил, что все мои каталоги VC++ для incl и lib правильны и рекомендованы Microsoft и практически любым разработчиком C++. Я попытался установить самый последний WinSDK (8.1), чтобы получить заголовок и все его функции, но я на 110% уверен, что его там нет. Я устанавливаю SDK для Win7 прямо сейчас, в надежде, что он там будет (хотя, конечно, это займет много времени.)

У моего ПК есть проблема "синего экрана" только для любой проблемы, которая должна быть решена, если компьютер оставлен в покое на 15 минут, так что, возможно, это проблема жесткого диска?

Кто-нибудь из вас может помочь? Абсолютно любая голова, снисходительная, очевидная или нет, будет оценена за тонну, и спасибо за чтение в любом случае.

РЕДАКТИРОВАТЬ: @MichaelBurr попросил журнал сборки, и я не мог опубликовать его полностью внизу, поэтому я решил добавить его сюда.

Build started 14/03/2014 00:34:11.
 1>Project "c:\Users\Brandon\documents\visual studio 2012\Projects\ConsoleApplication4\ConsoleApplication4\ConsoleApplication4.vcxproj" on node 2 (Build target(s)).
 1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.CppBuild.targets(344,5): warning MSB8003: Could not find WindowsSDKDir variable from the registry.  TargetFrameworkVersion or PlatformToolset may be set to an invalid version number.
 1>ClCompile:
     C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\CL.exe /c /ZI /nologo /W3 /WX- /sdl /Od /Oy- /D WIN32 /D _DEBUG /D _CONSOLE /D _UNICODE /D UNICODE /Gm /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Yc"stdafx.h" /Fp"Debug\ConsoleApplication4.pch" /Fo"Debug\\" /Fd"Debug\vc110.pdb" /Gd /TP /analyze- /errorReport:prompt stdafx.cpp
     stdafx.cpp
 1>c:\users\brandon\documents\visual studio 2012\projects\consoleapplication4\consoleapplication4\targetver.h(8): fatal error C1083: Cannot open include file: 'SDKDDKVer.h': No such file or directory
 1>Done Building Project "c:\Users\Brandon\documents\visual studio 2012\Projects\ConsoleApplication4\ConsoleApplication4\ConsoleApplication4.vcxproj" (Build target(s)) -- FAILED.

Сборка не удалась.

Прошедшее время 00:00:00.12

9 ответов

Решение

У вас есть та же проблема с пустым проектом, который вы разместили? Я попробовал и построил ваш проект, используя Windows 7 32 и 64 бит и XP 32 бит. Все сборки нормально, проблем с поиском SDKDDKVer.h нет.

У вас должны быть проблемы с настройками пути зависимостей.

Возможно, вы перенесли настройки VS из одной установки VS в другую, возможно, с 32-разрядной на 64-разрядную (или наоборот) машину? Если это так, помните, что ваш путь может содержать неправильные имена папок. Для 32-битной системы все приложения устанавливаются по умолчанию в C:\Program Files, а на 64-битной машине все 32-битные приложения устанавливаются в Program Files (x86). Это дело для VS. Все включаемые файлы находятся в:

  • C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Включить - оригинальная установка VS
  • C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\ Включить - после установки 7.1 VS SDK

Если у вас установлены другие пакеты SDK, у вас могут быть другие папки с SDKDDKVer.h:

  • C: \ Program Files (x86) \ Windows Kits \ 8.0 \ Include \ shared
  • C: \ Program Files (x86) \ Windows Kits \ 8.1 \ Include \ shared
  • C:\Program Files\Microsoft SDKs \ Windows \ v6.0A \ Включить
  • C:\Program Files\Microsoft SDK \Windows\v7.0\ Включить
  • C:\Program Files\Microsoft SDK \Windows\v7.1\ Включить

В настройках вашего проекта у вас должны быть следующие пути для включений:

  • $ (VCInstallDir) включают
  • $(VCInstallDir)atlmfc\ включают
  • $(WindowsSDK_IncludePath)

Обратите внимание на используемые макросы. Они должны быть унаследованы от настроек родителей по умолчанию. Возможно, вы изменили настройки пути в диспетчере свойств, изменив настройки, сохраненные в файле Microsoft.Cpp.Win32.user.props.

Это могло произойти, если ваш проект конвертируется из более ранних версий VS.

Если вышеуказанная информация не может решить вашу проблему, я предлагаю следующие шаги из моего опыта VS2013:

  1. Выберите "Свойства проекта"> "Конфигурация"> "Каталоги VC++"> " Включить каталоги" и добавьте: c: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.1A \ Include
  2. Выберите "Свойства проекта"> "Конфигурация"> "Каталоги VC++"> "Каталоги библиотек" и добавьте: c: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.1A \ Lib

После этой конфигурации у меня возникла проблема с ошибкой ссылки rc.exe. Для этой проблемы нужна еще одна вещь:

  1. скопируйте файлы RC.exe и RcDll.dll из C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin и вставьте их в C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin После всех этих шагов настройки вы можете создать простой "Hello World!" пример и беги если повезет.

Этот работал для меня: "недавно у меня возникла эта проблема, когда я преобразовал решение из VS2010 в VS2013. Я решил ее, просто установив флажок" Наследовать от родительского или проекта по умолчанию "в разделе" Свойства проекта ">" Конфигурация ">" Каталоги VC++ ">" Включить каталоги для все конфигурации каждого проекта."

У меня была именно эта проблема. После долгих часов попыток найти проблему, просматривая различные пути и пытаясь изменить их, удаляя все продукты MS, переустанавливая их и т. Д., Без какого-либо успеха, я нашел решение, заключающееся в том, чтобы открыть файл C:\Users\{user}\AppData\Local\Microsoft\MSBuild\v4.0\Microsoft.Cpp.Win32.user.props и изменения

<PropertyGroup>
  <IncludePath>$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSdkDir)include;$(FrameworkSDKDir)\include;C:\Program Files (x86)\BCGSoft\BCGControlBarPro\BCGCBPro;C:\Program Files (x86)\BCGSoft\BCGControlBarPro\BCGCBPro</IncludePath>
  <LibraryPath>$(VCInstallDir)lib;$(VCInstallDir)atlmfc\lib;$(WindowsSdkDir)lib;$(FrameworkSDKDir)\lib;C:\Program Files (x86)\BCGSoft\BCGControlBarPro\bin;C:\Program Files (x86)\BCGSoft\BCGControlBarPro\bin</LibraryPath>
</PropertyGroup>

в

<PropertyGroup />

Я не знаю, как возникла эта проблема, но я нашел решение, скопировав файл с компьютера моего коллеги, где все работало нормально. Проблема может быть вызвана недавней установкой и удалением BCGControlBarPro...

Я знаю, что здесь есть несколько ответов на этот вопрос, но я хотел объяснить, что решило проблему для меня. Я искал и искал, искал и не нашел много хорошего материала. Решением для меня было щелкнуть правой кнопкой мыши по моему проекту, перейти к свойствам. На вкладке свойств я изменил версию WindowsSDK на единственную, которую я установил. Это решило проблему.

Почему это произошло? Я не уверен, но это произошло после того, как Visual Studio выполнила обновление и после того, как Центр обновления Windows установил новейшую сборку Windows 10. Я предполагаю, что когда это произошло, версия SDK в проекте не соответствовала установленному SDK.

Я надеюсь, что это спасет кого-то в будущие часы поиска!

Мустафа Кемаль ответит правильно, но если вы не хотите добавлять этот каталог и библиотеку для каждого проекта VC++ отдельно, вы должны определить их как системные переменные в переменных среды Windows, а затем перезагрузить компьютер.

Имя переменной: WindowsSDK_IncludePath, значение переменной: c:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include.

а также

Имя переменной: WindowsSDK_LibraryPath_x86, значение переменной: c:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib

У меня недавно была эта проблема, когда я конвертировал решение из VS2010 в VS2013. Я решил эту проблему, просто установив флажок "Наследовать от родительского или проекта по умолчанию" в разделе " Свойства проекта"> "Конфигурация"> "Каталоги VC++"> "Включить каталоги" для всех конфигураций каждого проекта.

Это иногда случается, когда вы добавляете путь для вашего включаемого файла или библиотеки и удаляете исходные, уже записанные в свойствах проекта.

Не следует удалять старый путь для каталогов include или lib, таких как $(VCInstallDir)include; $(VCInstallDir)altmfc\ включают в себя; $(WindowsSdkDir) включают в себя; $(FrameworkSDKDir)\ включают в себя;

То же самое касается пути lib, просто замените каждое включение на lib.

С уважением

Я использую 2008, 2010, 1012 и 2013, установленные на одной машине - Windows 7 и XP 32 и 64-разрядная, 7-разрядная версия 7, без каких-либо проблем.

Вы пытаетесь построить проект, созданный другой версией VS?

Похоже, у вас есть проблема с зависимостями, установленными в вашем проекте, или у вас есть проблема с версией SDK, для которой установлена ​​неправильная версия.

Если вы создаете другой проект, например, диалоговое приложение; эта проблема сохраняется? Вам не нужно запускать какой-либо пакетный файл.

  • Откройте свойства проекта (щелкните правой кнопкой мыши проект и выберите свойства).

  • Выберите "Общие" в разделе "Свойства конфигурации".

  • Проверьте набор инструментов платформы на правой панели. Не следует устанавливать Visual Studio 2008 (V90).

Попробуйте восстановить. Если проблема не устранена, поделитесь своим проектом.

Застегните его и используйте некоторые сервисы общего доступа, чтобы опубликовать его (например, dropbox).

Другие вопросы по тегам