6 votes

erreur : le fichier 'kernel32.lib' ne peut pas être ouvert

J'ai installé VS2013 et VS2015 sur Windows 7.

J'ai un projet C++ Dll existant qui se construisait bien, mais maintenant, tout d'un coup, il ne se construit pas en utilisant VS2015 et me donne l'erreur :

LINK : fatal error LNK1104: cannot open file 'kernel32.lib'

De ce poste : Erreur fatale LNK1104 : Impossible d'ouvrir le fichier 'kernel32.lib'. Je suis allé chercher le fichier kernel32.lib et il se trouve ici :

C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x86

Quand je vais à mes projets Propriétés-->Lieur-->Entrée et sélectionner Macros, je vois que ce chemin est bien là :

enter image description here

Mon jeu d'outils de plate-forme est réglé sur Visual Studio 2013 - Windows XP (v120_xp) ce qui a toujours été le cas.

Pourquoi mon projet s'est-il soudainement arrêté de fonctionner ? Qu'est-ce qui a pu se passer ?

1voto

sergiol Points 482

Si la cause est un plug-in/extension qui modifie vos fichiers props, il peut en conséquence modifier les paramètres "Visual C++ Directories" de votre projet.

Ainsi, la solution qui a fonctionné pour moi est décrite sur ma propre réponse Impossible de compiler des projets Visual Studio 2010 64 bits que je retranscris intégralement ici :

Après avoir demandé de l'aide à un collègue, nous avons constaté que même en obtenant des constructions propres des projets depuis TFS, avec l'option d'écrasement, les Propriétés de configuration du projet > Répertoires VC++ sur mon ordinateur étaient toujours différents de ceux des autres ordinateurs.

En cherchant davantage, nous avons trouvé la solution sur le dernier post de Réinitialiser chemin include/lib que je vais transcrire intégralement :

Utilisez "del %HOMEPATH%". \AppData\Local\Microsoft\MSBuild\v4.0\Microsoft.Cpp.Win32.user.props " n'est pas toujours la bonne solution. Il vaut mieux utiliser "del %USERPROFILE%". \AppData\Local\Microsoft\MSBuild\v4.0\Microsoft.Cpp.Win32.user.props " où se trouve normalement le dossier de données de l'application.

Ensuite, j'ai regardé dans le contenu de Microsoft.Cpp.x64.user.props et j'ai vu qu'il y avait des choses ajoutées par Visual Leaks Detector. Ce qui est raisonnable, car un mois auparavant, j'ai fait une analyse de fuite de mémoire en utilisant VLD.

J'ai donc supprimé le fichier et maintenant tout se compile bien en 64bits !

1voto

Werner Henze Points 4663

J'ai eu le même problème aujourd'hui. Il s'est avéré que le SDK 10.0.15063.0 a été installé sur mon système, mais sans les fichiers Desktop C++. En sélectionnant le SDK dans la liste des programmes installés, en effectuant un changement d'installation et en sélectionnant les options Desktop C++, les fichiers nécessaires ont été ajoutés et je peux à nouveau me connecter.

0voto

gojimmypi Points 31

J'ai eu ce problème similaire aujourd'hui avec Visual Studio 2017. Ma cause s'est avérée être un mauvais paramètre d'environnement dans NETFXSDKDir, plus précisément :

NETFXSDKDir=C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1

Il devait avoir une valeur de :

C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\um\x86

J'ai une réponse plus détaillée ici :

Erreur fatale LNK1104 : Impossible d'ouvrir le fichier 'kernel32.lib'.

0voto

João Luis Points 1

J'ai eu ce même problème aujourd'hui avec Visual Studio 2013 lorsque j'ai changé mes répertoires VC++ :

Projet->Propriétés->Répertoires VC++ : Inclure les annuaires

0voto

Varun Challa Points 1

J'ai obtenu cette erreur fatal error lnk1104 : cannot open file 'kernel32.lib'. Cette erreur est due au fait qu'il n'y a pas de chemin dans les répertoires VC++. Pour résoudre ce probelem

  1. ouvrir le studio visuel 2008
  2. aller à Outils - options - Projets et solutions - Répertoires VC++ -*
  3. puis, dans le coin droit, sélectionnez Dossiers de la bibliothèque
  4. ici vous devez ajouter le chemin de kernel132.lib

Dans mon cas, c'est C:\Program Fichiers \Microsoft SDKs \Windows\v6.0A\Lib

Merci.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X