VS 2015命令提示中不再存在rc.exe


75

我刚刚安装了Windows 10 Creators Update(版本10.0.15063)。

我安装了多个版本的Visual Studio(2012、2013、2015和2017)。我仅在几周前安装了VS 2017。

问题

在“ VS2015 x64本机命令提示符”中运行时,CMake(版本3.8.1)不再找到C / C ++编译器(在VS 2017命令提示符中运行时,它确实可以正常工作)。

再生产

内容CMakeLists.txt

project (test)
add_executable (test test.cpp)

(的内容test.cpp无关紧要。)

在VS2015 x64本机命令提示符中进行CMake调用:

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

CMake输出:

-- 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".

分析

查看以下内容可以明确失败的原因CMakeFiles/CMakeError.log

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找不到(资源编译器)。实际上,在同一个VS 2015命令提示符下:

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

虽然它在VS 2013命令提示符发现:

> 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

和VS 2017命令提示符:

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

PATH在各种VS命令提示符中检查环境变量的内容:

  • 在VS 2013命令提示中,PATH包含

    C:\Program Files (x86)\Windows Kits\8.1\bin\x64
    
  • 在VS 2017命令提示符中,PATH包含

    C:\Program Files (x86)\Windows Kits\10\bin\x64
    C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64
    
  • 但是在VS 2015命令提示符中,PATH仅包含

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

    其中不包含rc.exe

问题

  1. 这是已知问题还是特定于我的系统?

  2. Windows 10 Creators Update可能在系统中安装,卸载或更改哪些(可能与Windows SDK相关的东西)来触发此问题?

  3. 解决此问题的干净方法是什么?

编辑:安装了VS 2017组件:

VS 2017组件已安装


我刚刚遇到了与您几乎相同的OS和Visual Studio安装程序的相同问题。我正在尝试构建Wireshark(64位).bl。奇怪的是,我已经在家里的两台计算机上构建了它,而没有遇到这个问题。现在尝试在我的工作机器上构建,我遇到了问题。我手动将C:\ Program Files(x86)\ Windows Kits \ 10 \ bin \ x64 C:\ Program Files(x86)\ Windows Kits \ 10 \ bin \ 10.0.15063.0 \ x64添加到PATH,但这导致找不到“ winver.h”。
DaveCleland '17

1
您正在使用什么更新级别的VS2015?在运行VS2015 Update 3的我的家用计算机上,路径中存在rc.exe C:\Program Files (x86)\Windows Kits\10\bin\x64\rc.EXE
DaveCleland '17

@DaveCleland我正在运行Visual Studio Entreprise 2015版本14.0.25425.01更新3。
FrançoisBeaune

五百赏金
-Fattie

出现此问题的一条基本途径是:(1)购买一台新的干净的Windows10机器(2018年末)。(2)安装VS2017 (3)改变主意,卸载(以某种方式或其他方式)VS2017并安装VS2015。 这似乎从根本上引起了“ windows cmake危机”的出现。
Fattie

Answers:


102

花了一些时间在安装了Win10 Creators Edition和VS2010,VS2013,VS2015和VS2017的三台计算机上研究此问题,该计算机在两台计算机上均可运行,而在第三台计算机上则无法运行。全部都具有VS2015 Update 3,并且应该都已安装了相同的选项。

运行以下批处理文件

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

应该为VS2015 x64环境设置正确的环境。这应该添加

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

到路径。这是rc.exe所在的位置 。但是在我的故障机器上,rc.exe从这里丢失了,但是它确实存在于

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

我回过头来,觉得这是一个设置问题,我重新运行了VS2015 Update 3设置,并告诉它添加

Windows和Web开发->通用Windows应用开发工具->工具(1.4.1)和Windows 10 SDK(10.0.14393)

这导致rc.exe和相关文件出现在

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

在上运行rc -v

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

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

给出了相同的版本号10.0.10011.16384

不知道为什么原始安装中缺少rc.exe,但是重新运行安装并添加其他SDK为我修复了它。看起来像

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

应该是默认的rc.exe,但先前的安装未设置。


4
太好了,谢谢您的详细调查。许多人都遭受这个问题的困扰,但据我所知,直到任何地方都没有提供干净的解决方案。您的第一个清洁解决方案。谢谢!
弗朗索瓦·博恩

1
正常工作,只需在PATH变量中使用rc.exe将路径添加到/ bin即可正常工作
ivan_bilan

2
尽管vcvars64(或vcvarsall x64在C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ VC下)添加了所需的路径,并且重新安装将exe放入该路径,但所有这些仅适用于开发人员的命令行;VS2015 IDE仍然找不到rc.exe并吐出相同的错误。因此,我们也可以将指向rc.exe的路径(无论它位于何处)添加到PATH环境变量中,并且已经全部完成。但是我仍然想感谢这个答案,因为至少它使我知道rc.exe在哪里。
user5280911 '18

1
感谢十亿美元的@DaveCleland。一个细节,无论如何现在(2018年末),它似乎提供了三个版本的SDK来安装。 我只坚持了10.0.10011.16384看来这是使它起作用的唯一方法
Fattie

17

绝对不只是你。我昨天安装了VS2017,这样做似乎在我身上也产生了同样的问题。我没有一个好的解决方案(应该将此错误报告给Microsoft),但是我确实有一个解决方法。

我能够从中复制rc.exe和rc.dll

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

那为我解决了这个问题。我的直觉是这是一个注册表项被覆盖,但是我对它的了解还不够。


1
谢谢。您确定您的意思是C:\Program Files (x86)\Windows Kits\10\bin\x86,不是C:\Program Files (x86)\Windows Kits\10\bin\x64吗?
弗朗索瓦·博恩

奇怪的是,在我的机器上,是的。似乎很奇怪,但是我的bin \ x64不包含rc.exe或rc.dll。YMMV。
猎鹰

谢谢。@FrançoisBeaune将文件复制到x64对我没有任何帮助,但是x86很好用。
TinyRacoon

7

Windows 10 15063.608(Windows SDK 10.0.15063.0)遇到了相同的问题。适用于我的解决方案是为Windows 10套件二进制文件x64和x86文件夹创建硬链接,如下所示(使用具有管理员权限的命令提示符):

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"

(在运行这些命令之前,只需重命名现有Windows Kits\10\bin\x64Windows Kits\10\bin\x86文件夹-好像它们没有被使用。

PSmklinkCMD命令,在以下情况下不可用PowerShell


4

出于某种原因,内置的工具(1.4.1)和Windows 10 SDK(10.0.14393)安装程序对我不起作用:

  1. C:\Program Files (x86)\Windows Kits\10\bin\x86 在安装过程中被填充(成功!)
  2. ...然后人口减少(悲伤!)
  3. 最终安装程序返回错误-2147023293/ 0x80048646

“视窗10 SDK(版本10.0.14393.795)”安装程序Windows SDK中和模拟器存档工作,但:C:\Program Files (x86)\Windows Kits\10\bin\x86获得并保持人口,其中包括rc.exe

Windows 7 x64,Visual Studio Professional 2015更新3。



2

Windows Sdk版本10.0.16299.0的VS2017社区15.4.5有类似问题,但仅适用于通过TeamCity进行的构建;从VS开发人员命令提示符启动时,从VS内部进行构建可以正常工作,使用MSBuild进行构建也可以。因此,这不能完全回答OP的问题,但是如此相似,这是第一个搜索匹配项,因此我将在此处添加。

发现这并不溶液要求修改安装以任何方式(没有链接/复制所以不易出错和易于实现自动化):

VisualStudioVersion环境变量设置为15.0

你可以这样做全球使用标准的Windows GUI为(例如用于Windows 10在这里),但我宁愿强烈反对它是因为...可以用VS的其他版本的干扰,而且它不是易于实现自动化,也不查了变化输入到您的构建代码中,因此很难在不同的机器上复制。更好的选择是在运行构建的命令行中进行设置(cmd:set VisualStudioVersion=15.0PS:$env:VisualStudioVersion = '15.0'在TeamCity中:add env.VisualStudioVersionParameter)。另一种选择是将此目录作为属性传递给MSBuild(通过/p:VisualStudioVersion=15.0或在teamCity add中system.VisualStudioVersion)。


以及如何更改该变量?有指示吗?
ivan_bilan

2
  1. 运行您的在线安装程序vs_community2017.exe。
  2. 选择修改您的VS2017
  3. 选择使用C ++进行桌面开发
  4. 选择Windows 10 SDK(我的版本是10.0.10586)并安装它

运行VS2015命令提示符:

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

似乎vs2017默认安装了最新的SDK,并覆盖了旧版本。


2

对于任何陷入困境的人,一个特殊的问题集是:

  1. 获得新的Windows 10 PC
  2. 安装VS 2017 [*]
  3. 卸载VS 2017和
  4. 安装VS 2015

如果执行上述操作,

Windows / VS安装程序整体套件似乎存在错误或其他行为。

基本上,似乎MSFT必须解决四个问题(a)有时它只是不安装rc.exe,(b)如果您“仅”询问c ++的东西,它就不会安装rc.exe,您必须询问对于所有内容(c)卸载-安装管道似乎都以各种方式搞乱了(d),即使它为您随机安装了rc.exe,它也会忘记或弄乱路径。

:/

龙乏味的故事,总之,解决方案似乎包括一个或一个以上

  1. 基本上安装或重新安装10.0.10011.16384 (但仅安装一个,而不安装后面的两个)
  2. 环顾四周,看看rc.exe是否纯净,直截了当,不在那儿。如果是这样,请在任何地方安装它
  3. 在VS中,您认为可以“仅”安装c ++东西,但不能。实际上,您必须对所有Web都选择“是”,等等。这似乎给您“获得rc.exe的更大希望”。完成此操作后,请重新访问第2点,因为您可能仍然没有。
  4. 在进行了2次然后3次,可能又是2次之后,您可能仍然不会在实际路径中使用它。我很想知道哪个是在您的路线中拥有“最佳,自然”的地方,但这似乎是一个失败的原因。只需将其推向您在任何地方,任何地方的路径即可。
  5. 在某个地方创建一个简单的cmake文件-并对其进行测试。

。。。。。。

[*]它可能是VS 2017附带的,不要忘记VS 2017可能会烦人地安装其他东西,例如Unity等。


1

在管理员模式下的文本编辑器中打开“ C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ Common7 \ Tools \ VsDevCmd.bat”,然后更改该行

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

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


1

我有同样的问题。多个Visual Studio版本,包括2015和2017。我的解决方案是从2017开发人员命令提示符运行cmake命令,并使用以下命令指定2015 Visual Studio版本:

cmake -G“ Visual Studio 14 2015” ..


0

在本机64/86 visual Studio命令提示符下执行以下命令以设置正确的版本vs2015-%comspec%/ k“ C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ VC \ vcvarsall.bat” amd64 8.1%comspec %/ k“ C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ VC \ vcvarsall.bat” x86 8.1

在本机64/86 visual Studio命令提示符下执行以下命令,以设置正确的版本与vs2013-%comspec%/ k“ C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ VC \ vcvarsall.bat” amd64 7.1%comspec%/ k“ C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ VC \ vcvarsall.bat” x86 7.1

这将设置正确的路径并执行而不会出现任何问题。我已经在装有VS2013,VS2015,VS2017的WIN10上对此进行了测试。


0

似乎当您安装更新版本的Visual Studio时,默认情况下将选择更新的SDK。

您必须选择随VS2015一起安装的SDK(8.1):

%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" <arch> 8.1

我在这里找到了正确的答案

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.