webentwicklung-frage-antwort-db.com.de

visual studio 2010 express + win sdk = Eingabedatei 'kernel32.lib' kann nicht geöffnet werden

Ich habe x64 mit VS2008 Express kompiliert und SDK gewonnen. Ich habe kürzlich meinen Rechner neu aufgebaut (auf 64 Bit Windows 7 aktualisiert) und den neuesten Express installiert. Befolgen Sie dasselbe Verfahren, um x64-Ziele zuzulassen, und meine Quellen verbinden sich nicht mehr. Egal was ich tue, ich bekomme immer:

LINK: schwerwiegender Fehler LNK1181: Eingabedatei 'kernel32.lib' kann nicht geöffnet werden

komisch genug 32bit Kompilierung funktioniert gut.

Ist das ein bekanntes Problem? Google hat mir keine Anhaltspunkte gegeben, wie man es angehen kann, nur ein paar Erwähnungen des gleichen Problems, aber keine Lösungen.

Ist es möglich, VS 2010 mit Win 7 SDK zu verwenden, um 64 Bit als Ziel festzulegen?

danke Pawel

20
pawel

die Lösung war am Ende einfach. Der Trick besteht darin, VS zu zeigen, um ein SDK zu gewinnen, das aus irgendeinem Grund in meinem Fall falsch war. Project Properties -> VC++ Directories -> Library Directories sollte auf C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib\x64 zeigen.

26
pawel

Etwas anderes, was ich auch gefunden habe, ist absolut einfach, zu Project Properties-> General zu gehen und Platform Toolset auf Windows7.1SDK zu setzen. Frage mich, warum das funktioniert ...

12
Michael Litvin

Ich hatte das gleiche Problem und die Antworten hier haben mir geholfen, aber ich musste mehr tun.

Etwas hatte meine Windows SDK-Installation beschädigt. Daher fehlten mir alle .lib-Dateien, die unter C:\Programme\Microsoft SDKs\Windows\v7.1\Lib\abgelegt werden (der x64-Ordner war in Ordnung). Also folgte ich dem Gesagten hier und installierte es erneut. Dann konnte ich Platform Toolset auf Windows7.1SDK (in VS2010 und VS2013) setzen.

Dies funktioniert, weil das Platform Toolset den Pfad $ (WindowsSdkDir) in Visual Studio ändert (die gespeicherten Pfade befinden sich in der Systemregistrierung). Diese wurden beschädigt, wenn Kernel32.lib nicht gefunden wurde.

2
Eric O.

Wenn keine der oben genannten Lösungen funktioniert. Stoppen Sie und machen Sie eine Vernunftsprüfung. Ich wurde mit der falschen -G config-Zeichenfolge verbrannt und es gab mir diesen irreführenden Fehler.

Führen Sie zuerst die VS-Eingabeaufforderung nicht die reguläre Eingabeaufforderung aus. Sie finden es in Start Menu -> Visual Studio 2015 -> MSBuild Command Prompt for VS2015 

Dadurch werden alle korrekten Pfade zu VS-Tools usw. eingerichtet.

Nun sehen Sie, welche Generatoren von cmake verfügbar sind ...

cmake -help

...<snip>... The following generators are available on this platform: Visual Studio 15 [Arch] = Generates Visual Studio 15 project files. Optional [Arch] can be "Win64" or "ARM". Visual Studio 14 2015 [Arch] = Generates Visual Studio 2015 project files. Optional [Arch] can be "Win64" or "ARM". Visual Studio 12 2013 [Arch] = Generates Visual Studio 2013 project files. Optional [Arch] can be "Win64" or "ARM". Visual Studio 11 2012 [Arch] = Generates Visual Studio 2012 project files. Optional [Arch] can be "Win64" or "ARM". Visual Studio 10 2010 [Arch] = Generates Visual Studio 2010 project files. Optional [Arch] can be "Win64" or "IA64". ...

Wählen Sie dann die entsprechende Zeichenfolge mit dem hinzugefügten Bogen.

mkdir _build cd _build cmake .. -G "Visual Studio 15 Win64"

Wenn Sie cmake in einem Unterverzeichnis ausführen, ist es einfacher, eine 'saubere' Aktion auszuführen, da Sie einfach alles in diesem Verzeichnis löschen können.

Ich habe ein Upgrade auf Visual Studio 15 durchgeführt, habe aber nicht darauf geachtet und versucht, für 2012 zu generieren. 

1
TrophyGeek

FWIW, ich hatte das gleiche Problem mit Visual Studio 2013, als die gesamte v8.1-SDK-Installation (Dateien + Registrierungsschlüssel) abgelaufen war, was wahrscheinlich auf die Installation von Emborlandero RAD Studio zurückzuführen ist. 

Das Festlegen der Umgebungsvariable WindowsSdkDir hatte keine Auswirkungen, da sowohl Studio selbst (devenv.exe, Umgebung, die über Process Explorer untersucht wurde) als auch eine aus einer aus vcvarsall.bat abgerufenen Batchdatei aufgerufene Batchdatei diese Variable tatsächlich gelöscht hat, da das SDK v8.1 nicht gefunden wurde.

In Visual Studio ist es nicht möglich, maschinenspezifische Verzeichnisse maschinenweit zu konfigurieren (der Vorschlag, diese Maschinenabhängigkeit in jede einzelne Projektdatei zu setzen, ist unvorstellbar lächerlich). Eine erneute Installation des v8.1-SDK war nicht möglich rechtzeitig. Um Studio in der Zwischenzeit wieder zum Laufen zu bringen, wurde der String-Wert InstallationFolder unter hinzugefügt

Software/Microsoft/Microsoft SDKs/Windows/v8.1/

mit dem gleichen Inhalt wie sein V8.0-Cousin. Dies war unter HKLM/Wow6432Node, aber es sollte auch HKLM oder HKCU funktionieren.

Das hat Studio sofort wieder zum Laufen gebracht, ohne auch nur einen Neustart.

0
DarthGizka