在VS 2015命令提示符中不再找到rc.exe

我刚刚安装了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)

C:\Program Files (x86)\Windows Kits\10\bin\x64 C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64 的内容无关紧要。)

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

分析

当查看C:\Program Files (x86)\Windows Kits\10\bin\x64 C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64 时,失败的原因很明显:

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]

C:\Program Files (x86)\Windows Kits\10\bin\x64 C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64 (资源编译器)未找到。 实际上,在同一个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

在各种VS命令提示符中检查C:\Program Files (x86)\Windows Kits\10\bin\x64 C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64 环境变量的内容:

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

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

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

    rc.exe

    其中不包含rc.exe

问题

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

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

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

编辑:安装了VS 2017组件:

VS 2017 components installed

10个解决方案
76 votes

花了一些时间在装有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,但先前的安装未设置。

DaveCleland answered 2019-10-09T03:02:24Z
13 votes

绝对不只是你。 我昨天安装了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

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

Falcon answered 2019-10-09T03:03:03Z
5 votes

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文件夹-好像它们没有在使用。

Victoria Zhislina answered 2019-10-09T03:03:37Z
3 votes

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

  1. C:\Program Files (x86)\Windows Kits\10\bin\x86已在安装中期完成安装(成功!)
  2. ...然后人口减少(悲伤!)
  3. 最终安装程序返回错误C:\Program Files (x86)\Windows Kits\10\bin\x86/rc.exe

Windows SDK和仿真器存档中的“ Windows 10 SDK(版本10.0.14393.795)”安装程序可以运行:C:\Program Files (x86)\Windows Kits\10\bin\x86会一直填充,包括rc.exe

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

genpfault answered 2019-10-09T03:04:37Z
2 votes

指定CMAKE_SYSTEM_VERSION=8.1为我解决了这个问题。

Lars Bilke answered 2019-10-09T03:05:02Z
1 votes

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

找到了一个不需要以任何方式修改安装的解决方案(无需链接/复制,因此更不易出错且易于自动化):

set VisualStudioVersion=15.0环境变量设置为$env:VisualStudioVersion = '15.0'

您可以使用标准的Windows gui全局执行此操作(此处是Windows 10的示例),但我强烈建议您这样做,因为它可能会干扰VS的其他版本,而且它不是易于自动化或检查的更改 输入到您的构建代码中,因此很难在不同的机器上复制。 更好的替代方法是在运行构建的命令行中进行设置(cmd:set VisualStudioVersion=15.0 PS:$env:VisualStudioVersion = '15.0' in TeamCity:添加env.VisualStudioVersion参数)。 另一种选择是将此目录作为属性传递给MSBuild(传递/p:VisualStudioVersion=15.0或在teamCity中添加system.VisualStudioVersion)。

stijn answered 2019-10-09T03:05:51Z
1 votes
  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,并覆盖了旧版本。

yezhiyun answered 2019-10-09T03:06:51Z
1 votes

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

  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等。

Fattie answered 2019-10-09T03:09:05Z
0 votes

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

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

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

N3UR0CHR0M answered 2019-10-09T03:09:41Z
0 votes

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

cmake -G“ Visual Studio 14 2015” ..

kwes answered 2019-10-09T03:10:16Z
translate from https://stackoverflow.com:/questions/43847542/rc-exe-no-longer-found-in-vs-2015-command-prompt