web-dev-qa-db-fra.com

erreur fatale LNK1104: impossible d'ouvrir le fichier 'kernel32.lib'

Je reçois cette erreur depuis que j'ai installé le Kit de développement .NET Framework SDK pour la programmation 64 bits sur mon compilateur Visual C++ 2010 Express. Je ne peux même pas compiler un programme simple à cause de cette erreur que je reçois. Ma plate-forme est x86. Voici un aperçu si cela peut aider:

enter image description here

Je ne sais plus quoi dire. Je viens de télécharger ce compilateur hier et cela fonctionnait bien. Je souhaitais passer de la programmation 32 bits à la version 64 bits pour pouvoir travailler avec Assembly. J'ai donc téléchargé ceci SDK . J'ai cherché sur Google et même ici sur Stackoverflow. Google n'aidait pas beaucoup, mais j'ai trouvé un article ici qui semblait similaire au mien, mais les réponses n'ont pas vraiment rendu justice. Est-ce que quelqu'un sait pourquoi cette erreur se produit et comment je peux m'en débarrasser?

29
0x499602D2

Vérifiez les répertoires VC++. Dans VS 2010, vous les trouverez dans les propriétés de votre projet. Vérifiez si $(WindowsSdkDir)\lib est inclus dans la liste des répertoires. Sinon, ajoutez-le manuellement. Si vous construisez pour la plate-forme X64, vous devez sélectionner X64 dans la liste déroulante «Plateforme» et vous assurer que $(WindowsSdkDir)\lib\x64 est inclus dans la liste des répertoires.

16
Zaid Amir

Modifiez le jeu d'outils de la plateforme en: "Windows7.1SDK" sous Propriétés du projet-> Propriétés de configuration-> Général

18
gero

Assurez-vous d’avoir dans les répertoires VC++ (clic droit sur projet, page de propriétés)

  • Inclure les répertoires: $ (IncludePath) 
  • Élément de liste Répertoires de bibliothèque: $ (LibraryPath)
5
namar0x0309

Pour les utilisateurs en ligne de commande (c'est-à-dire - makefile) uniquement:

  1. Lorsque vous installez VC++ Express, il s’agit uniquement de 32 bits. Donc, les choses vont dans C:\Program Files (x86).
  2. Ensuite, vous décidez de passer aux capacités 64 bits. Donc, vous installez le SDK. Mais il est capable de 64 bits. Donc, les choses vont dans C:\Program Files.

Comme moi, vous avez probablement "réglé" votre makefile sur # 1, ci-dessus, via quelque chose comme ceci:

MS_SDK_BASE_DOS := C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A
ENV_SET         := LIB="$(MS_SDK_BASE_DOS)\Lib\x64"

Mais, maintenant, vous devez changer ce réglage en # 2, ci-dessus, comme ceci:

MS_SDK_BASE_DOS := C:\Program Files\Microsoft SDKs\Windows\v7.1

(Ne manquez pas le changement de "v7.0A" à "v7.1" également.)

5
dbanas

Ajoutez le chemin de bibliothèque de WindowsSdks dans le projet-> Propriétés-> Propriétés de configuration-> Répertoires VC++ -> Répertoires de bibliothèque .

J'ai ajouté le chemin suivant et l'erreur va ::

C:\Fichiers de programme (x86)\SDK Microsoft\Windows\v7.1A\Lib;

Mon système est Win-7, 64 bits, VS 2013, .net framework 4.5

3
Ujjaval Moradiya

J'ai eu une erreur similaire, le problème s'est arrêté lorsque j'ai vérifié ma liste "Éditeur de liens -> Entrée -> Dépendances supplémentaires" dans les propriétés du projet. Il me manquait un point-virgule ";" juste avant "% (AdditionalDependencies)" . J'ai également eu la même entrée deux fois. Vous devez éditer cette liste séparément pour Debug et Release.

2
user3011594

J'ai eu un problème différent sur Windows 10 avec Visual Studio 2017, mais avec les mêmes effets. Je pense que mes problèmes sont dus à l’installation de VS sur un lecteur autre que "C: \". J'ai résolu le problème en réinstallant Windows 10 SDK

J'ai d'abord dû désinstaller le SDK Windows (deux versions étaient installées). Puis couru l'exécutable. Une fois installé, Visual Studio fonctionnait parfaitement. 

1
Malcor

Dans Visual Studio 2017, je suis allé dans Propriétés du projet -> Propriétés de configuration -> Général, sélectionné Toutes les plates-formes _ ​​(1) , puis choisissez le menu déroulant (2)} _ sous Version du kit de développement logiciel (SDK) et mis à jour de 10.0.14393.0 à une version installée _ {(3)}. Pour moi, c'était 10.0.15063.0.

 enter image description here

Détails supplémentaires: Ceci a corrigé l'erreur dans mon cas car Windows SDK Version aide VS à sélectionner les chemins corrects. VC++ Répertoires -> Répertoires de bibliothèque -> Edit - > Macros -> indique que la macro $ (WindowsSDK_LibraryPath_x86) a un chemin avec le numéro de version sélectionné ci-dessus.

0
Sunsetquest

Système d'exploitation: Win10, Visual Studio 2015

Solution: Accédez au panneau de configuration ---> programme de désinstallation --- MSvisual studio ----> modification ----> organiser = réparer 

et le réparer .. Notez que vous devez vous connecter à Internet jusqu’à ce que la réparation soit terminée.

Bonne chance.

0
sa1

Si la solution ci-dessus ne fonctionne pas, vérifiez si vous avez $ (LibraryPath) dans Propriétés-> Répertoires VC++ -> Répertoires de bibliothèques. Si vous le manquez, essayez de l'ajouter.

0
SpicyWeenie

Je viens de rencontrer et résoudre ce problème par moi-même. Mon problème est un peu différent. J'utilise Visual Studio sous Windows 10. Lors de la création du projet, le Target Platform Version était automatiquement défini sur 10.0.15063.0. Mais il n'y a pas kernel32.lib pour cette version de SDK, ni les autres fichiers d'en-tête et les fichiers lib nécessaires. J'ai donc modifié le Target Platform Version en 8.1. Et ça a fonctionné.

Environnement :

  • Windows 10
  • Visual Studio 2015
  • Visual C++

Solution :

  1. Ouvrez le Property Page du projet;
  2. Accédez à la page General;
  3. Modifiez Target Platform Version sur la plate-forme cible souhaitée (par exemple 8.1).
0
cosmozhang

enter image description here

la solution de gero a fonctionné pour moi.
Dans Visual Studios 2012, suivez les étapes suivantes.
- Aller à l'explorateur de solutions
- Faites un clic droit sur votre projet
- Aller aux propriétés
- Propriétés de configuration -> Général
- Jeu d'outils de la plateforme -> passer à Windows7.1SDK

0
Trevor Hickey

Aujourd'hui, dans Visual Studio 2017, j'ai eu le même problème. 

La cause dans mon cas s’est avérée être un paramètre d’environnement incorrect dans NETFXSDKDir (NETFXSDKDir=C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1). Il doit être à la place NETFXSDKDir=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\um\x86. Spécifiquement, comme défini dans ce fichier de commandes (mon répertoire contient en fait 4 fichiers différents) pour l'invite de commande pour VS2017:

%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvars32.bat"

car je suis réticent à modifier l’un des fichiers de commandes "en tant qu’installé"… encore plus lorsque ce fichier de commandes en appelle un autre encore:

@call "%~dp0vcvarsall.bat" x86 %*

... au lieu de mon application de ligne de commande C++ spécifique, j'ai simplement ajouté le texte du chemin explicite: ;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\um\x86 pour une chaîne totale dans "Répertoire de bibliothèque" comme ceci: $(VC_LibraryPath_x86);$(WindowsSDK_LibraryPath_x86);$(NETFXKitsDir)Lib\um\x86;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\um\x86. (Faites un clic droit sur le projet, Propriétés → Propriétés de configuration → Répertoires VC++ → Répertoires de bibliothèque.) Cela a résolu l'erreur «Erreur fatale LNK1104: impossible d'ouvrir le fichier 'kernel32.lib'». J'ai trouvé cet indice dans ce numéro de GitHub .

Notez que ceci est reproductible dans Visual Studio 2017 Enterprise 2017 Version 15.1 (26403.0) même après une installation "de réparation" réussie… lors de la création d'une nouvelle application console Visual C++ Win32 et de la tentative de compilation.

En fait, sauf si une application vide est créée, le modèle par défaut inclut également une référence à <SDKDDKVer.h> et avec cela, j'obtiens cette erreur supplémentaire: Error (active) E1696 cannot open source file "SDKDDKVer.h". Donc, j'ai créé un projet C++ vide .

0
gojimmypi