2010-10-13 3 views
2

J'avais installé VS2010 mais j'ai trouvé que intellisense ne fonctionnait pas. J'ai regardé sur le web et j'ai découvert que je n'étais pas le seul à avoir ce problème. Donc, j'ai installé VS2008 et tout allait bien. Ensuite, j'ai décidé de nettoyer mon ordinateur et supprimé VS2010 et a immédiatement commencé à obtenir cette erreur sur mes programmes (nouveaux et anciens). Même un programme de test simple qui a une commande cout. J'ai essayé de réparer VS2008 et cela n'a pas fonctionné alors j'ai essayé de désinstaller puis de réinstaller et encore je reçois le même problème.LNK1104: impossible d'ouvrir le fichier 'kernel32.lib'

J'ai regardé en ligne pour ce problème et bien que j'ai trouvé beaucoup d'autres personnes éprouvent ce problème ce n'est pas la même chose. Ils ont des problèmes avec d'autres références externes, pas celles qui devraient automatiquement être incluses comme kernel32 et lib32 etc.

J'ai également essayé la solution qui a fonctionné pour certaines personnes avec leurs autres références et j'ai inclus le chemin (avec et sans guillemets) à mon répertoire kernel32 mais toujours je reçois le même problème, ou dans certains cas, je vais obtenir

LNK1104: ne peut pas ouvrir le fichier « C: \ WINDOWS \ system32.obj »

avec et sans guillemets dans la linker config.

Quelqu'un peut-il aider s'il vous plaît?

Répondre

0

I inclus le chemin (avec et sans guillemets) à mon répertoire kernel32

On dirait que vous pointez C:\Windows\System32 qui est l'endroit où la DLL est peut-être, mais ce n'est pas où le .lib le fichier sera.

Dans VS 2010, il est probablement quelque part comme:

C:\Program Files\Microsoft SDKs\Windows\v7.0A\Lib 

Je n'ai pas accès prêt à VS2008 dire où kernel32.lib est installé par défaut pour ce produit.

+0

D'accord, cela a plus de sens mais j'ai essayé cela et je reçois la même erreur seulement maintenant il montre LNK1104: impossible d'ouvrir le fichier 'C: \ Program Files \ Microsoft SDK \ windows \ v5.0 \ lib.obj' P.S. J'ai seulement jusqu'à v6.0A et que l'on n'a pas de répertoire lib, seulement un bin – Geoff

1

Je pense que l'option que vous cherchez ici est -MT au lieu de -MD. J'ai rencontré le même problème. Vous remarquerez que lorsque vous utilisez cette option, la taille de la DLL est beaucoup plus grande (inclut les dépendances)

0

Au cas où quelqu'un se présenterait à nouveau, j'ai trouvé la solution qui a fonctionné pour moi. Dans mon cas, l'UAC de Win 7 et/ou le logiciel de tri antivirus refusaient l'accès à kernel32.lib. Après avoir démarré VS 2008 en tant qu'administrateur et en désactivant Virus Scan pour les dossiers de projet, cela a fonctionné pour moi.

0

J'ai eu ce problème et je viens de le résoudre. J'avais le SDK installé, cependant, le VCVARS32.bat n'a pas pu trouver le SDK, ainsi il est par défaut à des chemins qui n'existaient pas (où VS2008 est installé). J'ai forcé que cela fonctionne en modifiant la vcvars32.bat ("C: \ Program Files (x86) \ Microsoft Visual Studio 9.0 \ Common7 \ Tools \ vsvars32.bat", voir la ligne 13):

11: @call :GetWindowsSdkDir
12:
*13: @SET WindowsSdkDir=C:\Program Files\Microsoft SDKs\Windows\v6.0A\
14:
15: @if not "%WindowsSdkDir%" == "" (

je devais Faites comme VS2008, VS2010 et VS2012 installés, comme la plupart d'entre nous qui doivent supporter plusieurs projets dans plusieurs équipes, donc la mise à jour de tout ce qui est global, comme le chemin environnemental actuel, pourrait mener au mélange des versions SDK.

Questions connexes