it-swarm.com.de

rc.exe wurde in der VS 2015-Eingabeaufforderung nicht mehr gefunden

Ich habe gerade das Windows 10 Creators Update (Version 10.0.15063) installiert.

Ich habe mehrere Versionen von Visual Studio installiert (2012, 2013, 2015 und 2017). Ich habe VS 2017 erst vor ein paar Wochen installiert.

Problem

CMake (Version 3.8.1) findet den C/C++ - Compiler nicht mehr, wenn er in einer "VS2015 x64 Native-Eingabeaufforderung" ausgeführt wird (wenn funktioniert, wenn er in einer VS 2017-Eingabeaufforderung ausgeführt wird).

Reproduktion

Inhalt von CMakeLists.txt:

project (test)
add_executable (test test.cpp)

(Der Inhalt von test.cpp ist irrelevant.)

CMake-Aufruf in einer nativen VS2015 x64-Eingabeaufforderung:

> mkdir build
> cd build
> cmake -G "Visual Studio 14 2015 Win64" ..

CMake-Ausgabe:

-- The C compiler identification is unknown
-- The CXX compiler identification is unknown
CMake Error at CMakeLists.txt:1 (project):
  No CMAKE_C_COMPILER could be found.

CMake Error at CMakeLists.txt:1 (project):
  No CMAKE_CXX_COMPILER could be found.

-- Configuring incomplete, errors occurred!
See also "D:/dev/cmaketest/build/CMakeFiles/CMakeOutput.log".
See also "D:/dev/cmaketest/build/CMakeFiles/CMakeError.log".

Analyse

Der Grund des Fehlers ist klar, wenn Sie CMakeFiles/CMakeError.log betrachten:

ClCompile:
  C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_AMD64\CL.exe /c /nologo /W0 /WX- /Od /D _MBCS /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Fo"Debug\\" /Fd"Debug\vc140.pdb" /Gd /TC /errorReport:queue CMakeCCompilerId.c
  CMakeCCompilerId.c
Link:
  C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_AMD64\link.exe /ERRORREPORT:QUEUE /OUT:".\CompilerIdC.exe" /INCREMENTAL:NO /NOLOGO kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib Shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /PDB:".\CompilerIdC.pdb" /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:".\CompilerIdC.lib" /MACHINE:X64 Debug\CMakeCCompilerId.obj
LINK : fatal error LNK1158: cannot run 'rc.exe' [D:\dev\cmaketest\build\CMakeFiles\3.8.1\CompilerIdC\CompilerIdC.vcxproj]

rc.exe (Resource Compiler) wurde nicht gefunden. In der gleichen VS 2015-Befehlszeile:

> where rc.exe
INFO: Could not find files for the given pattern(s).

Während es ist in einer VS 2013-Eingabeaufforderung gefunden:

> where rc.exe
C:\Program Files (x86)\Windows Kits\8.1\bin\x64\rc.exe
C:\Program Files (x86)\Windows Kits\8.1\bin\x86\rc.exe

und eine VS 2017-Eingabeaufforderung:

> where rc.exe
C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64\rc.exe

Überprüfen des Inhalts der Umgebungsvariablen PATH in verschiedenen Eingabeaufforderungen für VS-Befehle:

  • In einer VS 2013-Eingabeaufforderung enthält PATH

    C:\Program Files (x86)\Windows Kits\8.1\bin\x64
    
  • In einer VS 2017-Eingabeaufforderung enthält PATH

    C:\Program Files (x86)\Windows Kits\10\bin\x64
    C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64
    
  • In einer VS 2015-Befehlseingabeaufforderung enthält PATH jedoch nur

    C:\Program Files (x86)\Windows Kits\10\bin\x64
    

    welches nicht rc.exe enthält.

Fragen

  1. Ist dies ein bekanntes Problem oder ist es spezifisch für mein System?

  2. Was könnte das Windows 10 Creators Update möglicherweise im System installieren, deinstallieren oder ändern (möglicherweise etwas im Zusammenhang mit Windows SDKs), das dieses Problem auslösen könnte?

  3. Was ist ein sauberer Weg, um dieses Problem zu lösen?

Bearbeiten: Installierte VS 2017-Komponenten:

 VS 2017 components installed

55

Ich habe einige Zeit damit verbracht, dies auf drei Computern zu betrachten, auf denen Win10 Creators Edition und VS2010, VS2013, VS2015 und VS2017 installiert sind, wo es auf zwei Computern funktioniert und auf dem dritten Computer ausfällt. Alle hatten VS2015 Update 3 und alle sollten mit den gleichen Optionen installiert worden sein.

Ausführen der folgenden Batchdatei

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\AMD64\vcvars64.bat

sollte die richtige Umgebung für die VS2015 x64-Umgebung einrichten. Das sollte hinzufügen

C:\Program Files (x86)\Windows Kits\10\bin\x64

zum PFAD. Hier sollte rc.exe sein. Auf meinem fehlerhaften Rechner fehlte jedoch rc.exe hier, aber er war in vorhanden

C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64

Ich ging zurück und hatte das Gefühl, es handele sich um ein Setup-Problem. Ich habe das Setup für VS2015 Update 3 erneut ausgeführt und ihm gesagt, es hinzuzufügen

Windows und Webentwicklung -> Universal Windows App-Entwicklungstools -> Tools (1.4.1) und Windows 10 SDK (10.0.14393)

dadurch wurden rc.exe und verwandte Dateien in angezeigt

C:\Program Files (x86)\Windows Kits\10\bin\x64

rc -v on ausführen 

C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64\rc.exe

und

C:\Program Files (x86)\Windows Kits\10\bin\x64\rc.exe

gab die gleiche Versionsnummer 10.0.10011.16384

Nicht sicher, warum rc.exe in der ursprünglichen Installation fehlte, aber die Installation erneut auszuführen und das andere SDK hinzuzufügen, behebte es für mich. Es sieht aus wie 

C:\Program Files (x86)\Windows Kits\10\bin\x64\rc.exe

sollte die Standardeinstellung rc.exe sein, wurde aber bei einer vorherigen Installation nicht eingerichtet.

70
DaveCleland

Es ist definitiv nicht nur du. Ich habe VS2017 gestern installiert, und dies scheint an meinem Ende das gleiche Problem hervorgerufen zu haben. Ich habe keine gute Lösung (dies sollte an Microsoft als Fehler gemeldet werden), aber ich habe eine hacky Problemumgehung.

Ich konnte rc.exe und rc.dll von kopieren 

C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64 
to
C:\Program Files (x86)\Windows Kits\10\bin\x86

Das hat das Problem für mich gelöst. Meine Vermutung ist, dass es sich um einen Registrierungsschlüssel handelt, der überschrieben wird, aber ich habe mich noch nicht genug damit beschäftigt, um sicher zu sein.

11
Falcon

Das gleiche Problem ist mit Windows 10 15063.608 (Windows SDK 10.0.15063.0) aufgetreten. Die Lösung, die für mich funktioniert, ist die Erstellung von Hardlinks für die Windows 10-Kit-Binärdateien x64 und x86 (siehe unten).

mklink /J "C:\Program Files (x86)\Windows Kits\10\bin\x86" "C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x86"

mklink /J "C:\Program Files (x86)\Windows Kits\10\bin\x64" "C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64"

(Bevor Sie diese Befehle ausführen, benennen Sie einfach vorhandene Windows Kits\10\bin\x64- und Windows Kits\10\bin\x86-Ordner um - es sieht so aus, als würden sie nicht verwendet.

5

Aus irgendeinem Grund funktionierten das integrierte Tools (1.4.1) und das Windows 10 SDK (10.0.14393) -Installationsprogramm für mich nicht:

  1. C:\Program Files (x86)\Windows Kits\10\bin\x86 wurde während der Installation bestückt (Erfolg!)
  2. ... dann entvölkert (Trauer!)
  3. Und schließlich hat der Installer den Fehler -2147023293/0x80048646 zurückgegeben.

Das "Windows 10 SDK (Ver. 10.0.14393.795)" - Installationsprogramm aus dem Windows SDK und Emulator-Archiv hat zwar funktioniert: C:\Program Files (x86)\Windows Kits\10\bin\x86 ruft und bleibt gefüllt, einschließlich rc.exe.

Windows 7 x64, Visual Studio Professional 2015 Update 3.

3
genpfault

Die Angabe von CMAKE_SYSTEM_VERSION=8.1 hat das Problem für mich gelöst.

2
Lars Bilke

Für alle, die sich hier festsetzen, ist ein besonderes Problem:

  1. holen Sie sich einen neuen Windows 10 PC
  2. install VS 2017 [*]
  3. deinstallieren VS 2017 und
  4. installiere VS 2015

Wenn Sie das oben tun,

es scheint, dass ein Fehler oder ein anderes Verhalten mit der gesamten Suite von Windows/VS-Installationsprogrammen vorliegt.

Es gibt im Grunde vier Probleme, die MSFT beheben muss (a). Manchmal wird rc.exe nicht installiert. (B) rc.exe wird nicht installiert, wenn "nur" nach dem C++ - Material gefragt wird Für alles (c) scheint die Deinstallationsinstallations-Pipeline auf verschiedene Weise durcheinander zu sein (d), selbst wenn sie die rc.exe zufällig für Sie installiert, den Pfad vergisst oder verschmutzt.

: /

Lange langweilige Geschichte kurz, Lösungen scheinen eine oder mehrere von zu enthalten

  1. installieren oder installieren Sie 10.0.10011.16384 (aber nur das, NICHT die beiden späteren) oder installieren Sie es erneut.
  2. schauen Sie sich um und sehen Sie, ob die Datei rc.exe einfach und eindeutig ist, nicht vorhanden. Wenn ja, installiere es (irgendwo, irgendwo)
  3. in VS würden Sie denken, dass Sie "nur" die C++ - Dateien installieren können, aber keine. In der Praxis MÜSSEN Sie alle Web-Seiten mit Ja überprüfen. Dies scheint Ihnen mehr Hoffnung zu geben, rc.exe zu bekommen. Nachdem Sie dies getan haben, besuchen Sie Punkt 2 erneut, da Sie ihn möglicherweise immer noch nicht haben.
  4. Nachdem Sie 2, dann 3 und wahrscheinlich wieder 2 durchgeführt haben, werden Sie STILL wahrscheinlich nicht mehr in Ihrem tatsächlichen Pfad haben. Ich würde gerne wissen, welcher der "beste, natürlichste" Ort ist, um ihn auf Ihrem Weg zu haben, aber das scheint eine verlorene Sache zu sein. Schieben Sie es einfach irgendwo in Ihre Richtung. 
  5. Irgendwo eine einfache cmake-Datei erstellen - und testen, ob sie funktioniert.

. . . . . .

[*] es kann gut mit VS 2017 kommen, und vergessen Sie nicht, dass VS 2017 ärgerlich mit etwas anderem, Unity usw. installiert wird.

1
Fattie
  1. führen Sie Ihren Online-Installer vs_community2017.exe aus.
  2. wählen Sie den VS2017 aus
  3. desktop-Entwicklung mit C++ auswählen
  4. wähle Windows 10 SDK (meine Version ist 10.0.10586) und installiere es

Führen Sie die VS2015-Eingabeaufforderung aus:

> where rc
> C:\Program Files (x86)\Windows Kits\10\bin\x64\rc.exe
> C:\Program Files (x86)\Windows Kits\10\bin\x86\rc.exe

Es scheint, dass vs2017 default das neueste SDK installiert und alte Versionen überschreibt.

1
yezhiyun

Ähnliches Problem mit VS2017 Community 15.4.5 mit Windows Sdk Version 10.0.16299.0, jedoch nur für Builds über TeamCity; Builds von VS aus funktionieren gut und das Erstellen mit MSBuild beim Starten eines VS-Entwicklerbefehls Prompt. Dies beantwortet die Frage des OP nicht genau, ist aber so ähnlich und dies ist einer der ersten Suchtreffer. Ich werde es hier hinzufügen.

Eine Lösung gefunden, bei der not die Installation in keiner Weise geändert werden muss (kein Verknüpfen/Kopieren, daher weniger fehleranfällig und leicht zu automatisieren):

setzen Sie die Umgebungsvariable VisualStudioVersion auf 15.0.

Sie können dies global mit der Standard-Windows-GUI tun (Beispiel für Windows 10 hier ), aber ich würde eher davon abraten, da es andere Versionen von VS stören könnte einfach automatisiert oder in Ihren Build-Code eingecheckt und somit schwieriger auf verschiedenen Maschinen zu reproduzieren. Eine bessere Alternative ist, dies in der Befehlszeile festzulegen, in der der Build ausgeführt wird (cmd: set VisualStudioVersion=15.0 PS: $env:VisualStudioVersion = '15.0' in TeamCity: add env.VisualStudioVersion Parameter). Eine andere Alternative besteht darin, dieses Verzeichnis als Eigenschaft an MSBuild zu übergeben (übergeben Sie /p:VisualStudioVersion=15.0 oder fügen Sie in teamCity system.VisualStudioVersion hinzu).

1
stijn

Öffnen Sie "C:\Programme (x86)\Microsoft Visual Studio 14.0\Common7\Tools\VsDevCmd.bat" in einem Texteditor im Administratormodus, und ändern Sie die Zeile .__ 

@if not "%WindowsSdkDir%" == "" @set PATH=%WindowsSdkDir%bin\x86;%PATH%

zu

@if not "%WindowsSdkDir%" == "" @set PATH=%WindowsSdkDir%bin\x86;%WindowsSdkDir%bin\%WindowsSDKVersion%x86;%PATH%

0
N3UR0CHR0M

Ich hatte genau das gleiche Problem. Mehrere Visual Studio-Versionen, einschließlich 2015 und 2017. Meine Lösung bestand darin, den Befehl cmake aus dem 2017er Entwickler-Befehl Prompt auszuführen und die Visual Studio-Version 2015 mit folgendem Befehl anzugeben:

cmake -G "Visual Studio 14 2015" ..

0
kwes

führen Sie den folgenden Befehl auf dem nativen 64/86 Visual Studio-Befehl aus. Aufforderung zum Festlegen der korrekten Version Für vs2015 -% comspec%/k "C:\Programme (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" AMD64 8.1% comspec %/k "C:\Programme (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86 8.1

führen Sie den folgenden Befehl in der nativen 64/86 Visual Studio-Eingabeaufforderung aus, um die richtige Version für vs2013 -% comspec%/k "C:\Programme (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" festzulegen. AMD64 7.1% comspec%/k "C:\Programme (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86 7.1

Dadurch wird der richtige Pfad festgelegt und ohne Probleme ausgeführt. Ich habe dies auf WIN10 mit installiertem VS2013, VS2015, VS2017 getestet.

0
Manoj U