web-dev-qa-db-fra.com

SDKDDKVer.h manquant, mais WinSDK installé? (Problèmes d'en-tête c ++)

Je suis donc récemment retourné à VC++ avec .NET 4.5 (Visual Studio 2012 professional) pour diverses raisons non pertinentes sur un nouveau PC après une éternité avec web dev, python et c #. Je suis assez à l'aise avec le langage dans son ensemble, sa syntaxe est superbe et j'adore la liberté de gestion de la mémoire, les pointeurs et les références. Je recommence avec un truc "hello world" et BAM! Erreur.

Comme de nombreuses personnes rencontrent ce problème, je reçois le message d'erreur IntelliSense lorsque j'essaie de compiler et d'exécuter: 

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) est également installé sur mon ordinateur. J'ai confirmé que mes répertoires VC++ pour incl et lib sont tous corrects et recommandés par Microsoft et pratiquement tous les développeurs C++. J'ai essayé d'installer le dernier WinSDK (8.1) pour obtenir l'en-tête et toutes ses fonctionnalités, mais je suis à peu près sûr à 110% de ne pas en trouver. J'installe actuellement le SDK pour Win7 dans l'espoir qu'il puisse y être hébergé (cela prend beaucoup de temps cependant).

Mon ordinateur a pour problème le filtrage bleu final uniquement pour résoudre tout problème après avoir laissé la machine tranquille pendant 15 minutes. Alors peut-être que c'est un problème de disque dur?

Est-ce que l'un de vous peut aider? Absolument tout heads-up, condescendant, évident ou non sera apprécié une tonne, et merci de lire quand même.

EDIT: @MichaelBurr a demandé le journal de construction et je ne pouvais pas l'afficher intégralement en bas, j'ai donc décidé de l'ajouter ici.

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.

Échec de construction.

Temps écoulé 00: 00: 00.12

8
Ary-Senpai

Avez-vous le même problème avec le projet vierge que vous avez posté? J'ai essayé et construit votre projet sous Windows 7 32 bits et 64 bits et XP 32 bits . .h.

Vous devez avoir un problème avec les paramètres de votre chemin de dépendances.

Il est possible que vous ayez transféré les paramètres VS d’une installation à l’autre, éventuellement d’une machine 32 bits à une machine 64 bits (ou inversement)? Dans ce cas, n’oubliez pas que votre chemin peut contenir des dossiers erronés. noms . Pour les systèmes 32 bits, toutes les applications sont installées par défaut sur C:\Program Files, alors que sur une machine 64 bits, toutes les applications 32 bits sont installées sur Program Files (x86). Ceci est un cas pour VS. Tous les fichiers d'inclusion sont dans:

  • C:\Program Files (x86)\SDK Microsoft\Windows\v7.0A\Include - Installation VS d'origine 
  • C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include - après l’installation de 7.1 VS SDK

Si vous avez d'autres packages SDK installés, vous pouvez avoir d'autres dossiers avec SDKDDKVer.h:

  • C:\Program Files (x86)\Kits Windows\8.0\Include\shared
  • C:\Program Files (x86)\Kits Windows\8.1\Include\shared
  • C:\Program Files\SDK Microsoft\Windows\v6.0A\Include
  • C:\Program Files\SDK Microsoft\Windows\v7.0\Include
  • C:\Program Files\SDK Microsoft\Windows\v7.1\Include

Dans le cadre de votre projet, vous devez avoir les chemins suivants pour includes:

  • $ (VCInstallDir) include
  • $ (VCInstallDir) atlmfc\include
  • $ (WindowsSDK_IncludePath)

Notez les macros utilisées. Ils doivent être hérités des valeurs par défaut définies par le parent . Vous avez peut-être remplacé les paramètres de chemin dans Gestionnaire de propriétés en modifiant le paramètre enregistré dans le fichier Microsoft.Cpp.Win32.user.props. 

Cela peut être arrivé si votre projet est converti à partir de versions antérieures de VS.

1
JohnCz

Si les informations ci-dessus ne permettent pas de résoudre votre problème, je propose ci-dessous les étapes de mon expérience avec VS2013:

  1. Sélectionnez Propriétés du projet> Configuration> Répertoires VC++> Inclure Répertoires et ajoutez ce qui suit: c:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include
  2. Sélectionnez Propriétés du projet> Configuration> Répertoires VC++> Bibliothèque Répertoires et ajoutez ce qui suit: c:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib

Après cette configuration, j’ai eu un problème d’erreur de lien rc.exe. Pour ce problème, une dernière chose est nécessaire:

  1. copier les fichiers RC.exe et RcDll.dll à partir de C:\Program Files (x86)\Microsoft SDK\Windows\v7.1A\Bin et collez-les pour C:\Program Fichiers (x86)\Microsoft Visual Studio 12.0\VC\bin Après toutes ces étapes de configuration , Vous pouvez créer un simple "Hello World!" exemple et courez si vous avez de la chance.
16
Mustafa Kemal

Celui-ci a fonctionné pour moi: "récemment rencontré ce problème lorsque j'ai converti une solution de VS2010 à VS2013. Je l'ai résolu en cochant simplement la case" Hériter des valeurs par défaut du parent ou du projet "sous Propriétés du projet> Configuration> Répertoires VC++> Répertoires d'inclusion pour toutes les configurations de chaque projet. "

3
Daniel Khalaieff

Je viens d'avoir ce problème exact. Après des heures et des heures à essayer de trouver le problème en regardant différents chemins et en essayant de les changer, en désinstallant tous les produits MS et en les réinstallant etc. utilisateur}\AppData\Local\Microsoft\MSBuild\v4.0\Microsoft.Cpp.Win32.user.props et modification

<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 />

Je ne sais pas comment ce problème est survenu, mais j'ai trouvé la solution en copiant le fichier à partir de la machine de mon collègue où tout fonctionnait bien. Le problème peut être dû à une installation récente et à la désinstallation de BCGControlBarPro ...

3
Bjerner

Je sais qu'il y a plusieurs réponses à cette question, mais je voulais expliquer ce qui a résolu le problème pour moi. J'ai cherché et cherché encore et encore et je n'ai pas trouvé beaucoup de matériel de qualité. La solution pour moi était de faire un clic droit sur mon projet, puis sur accéder aux propriétés. Dans l'onglet Propriétés, j'ai remplacé la version WindowsSDK par la seule que j'avais installée. Cela a résolu le problème.

Pourquoi est-ce arrivé? Je ne suis pas sûr, mais c'est arrivé après que Visual Studio a effectué une mise à jour et après que Windows Update ait installé la dernière version de Windows 10. Je suppose que lorsque cela s'est produit, la version du SDK du projet ne correspond pas à celle installée.

J'espère que cela sauvera quelqu'un dans les prochaines heures de recherche!

2
Kenny Blackmon

La réponse de Mustafa Kemal est correcte, mais si vous ne souhaitez pas ajouter ce répertoire et cette bibliothèque pour chaque projet VC++ séparément, vous devez les définir comme variables système dans les variables d'environnement de Windows, puis redémarrer l'ordinateur. 

Nom de la variable: WindowsSDK_IncludePath, Valeur de la variable: c:\Fichiers de programme (x86)\Microsoft SDK\Windows\v7.1A\Include. 

et

Nom de la variable: WindowsSDK_LibraryPath_x86, Valeur de la variable: c:\Program Files (x86)\Microsoft SDK\Windows\v7.1A\Lib

2
Elnaz Yousefi

J'ai récemment eu ce problème lorsque j'ai converti une solution de VS2010 en VS2013. Je l'ai résolu en cochant simplement la case " Hériter des valeurs par défaut du parent ou du projet " sous Propriétés du projet> Configuration> Répertoires VC++> Inclure les répertoires pour toutes les configurations de chaque projet.

1
Shane

Je suis sous 2008, 2010, 1012 et 2013 installé sur le même ordinateur - Windows 7 et XP 32 et 64 bits, 7 32 bits, sans aucun problème.

Essayez-vous de construire un projet créé par une autre version de VS?

Il semble que vous ayez un problème avec les dépendances définies dans votre projet ou que vous ayez un problème avec la version du SDK définie sur la mauvaise version.

Si vous créez un autre projet, par exemple, une application basée sur une boîte de dialogue; ce problème persiste-t-il? Vous ne devez exécuter aucun fichier de commandes. 

  • Ouvrez les propriétés du projet (cliquez avec le bouton droit sur le projet et sélectionnezproperties).

  • Sélectionnez Général sous Propriétés de configuration

  • Vérifiez le Platform Toolset dans le volet de droite. Il ne doit pas être définito Visual Studio 2008 (V90).

Essayez de reconstruire. Si le problème persiste, partagez votre projet. 

Compressez-le et utilisez certains des services de partage pour le publier (dropbox par exemple).

0
JohnCz

Cela se produit parfois lorsque vous ajoutez un chemin pour votre inclusion ou votre bibliothèque et supprimez ceux d'origine déjà écrits dans les propriétés du projet.

Vous ne devez pas supprimer l'ancien chemin des répertoires include ou lib, tels que $ (VCInstallDir) include; $ (VCInstallDir) altmfc\include; $ (WindowsSdkDir) include; $ (FrameworkSDKDir)\include;

La même chose est pour lib chemin, remplacez simplement chaque include par lib.

Meilleures salutations

0
shaima alsalihy