首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在VS 2015命令提示符中找不到rc.exe

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

Stack Overflow用户
提问于 2017-05-08 12:20:19
回答 13查看 44.7K关注 0票数 78

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

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

问题

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

再生产

CMakeLists.txt含量

代码语言:javascript
运行
复制
project (test)
add_executable (test test.cpp)

( test.cpp的内容与此无关。)

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

代码语言:javascript
运行
复制
> mkdir build
> cd build
> cmake -G "Visual Studio 14 2015 Win64" ..

CMake输出:

代码语言:javascript
运行
复制
-- 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的角度看,失败的原因是明确的。

代码语言:javascript
运行
复制
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 )。实际上,在相同的VS 2015命令提示符中:

代码语言:javascript
运行
复制
> where rc.exe
INFO: Could not find files for the given pattern(s).

虽然它在VS 2013命令提示符中找到:

代码语言:javascript
运行
复制
> 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命令提示符:

代码语言:javascript
运行
复制
> where rc.exe
C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64\rc.exe

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

  • 在VS 2013命令提示符中,PATH包含 C:\程序文件(x86)\Windows \8.1\bin\x64
  • 在VS 2017命令提示符中,PATH包含 C:\程序文件(x86)\Windows \10\bin\x64 C:\Program (x86)\Windows \10\bin\10.0.15063.0\x64
  • 但是在VS 2015命令提示符中,PATH只包含 C:\程序文件(x86)\Windows \10\bin\x64 它不包含rc.exe

问题

  1. 这是一个已知的问题,还是特定于我的系统?
  2. Windows 10创建者更新可能会在系统中安装、卸载或更改哪些内容(可能与Windows有关)会触发此问题?
  3. 什么是解决这一问题的干净方法?

编辑:已安装VS 2017组件:

EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2017-07-26 06:31:31

花了一段时间在安装了Win10 Creators和VS2010、VS2013、VS2015和VS2017的三台机器上,它们在两台机器上工作,在第三台机器上失败。它们都有VS2015更新3,而且它们都应该安装有相同的选项。

运行以下批处理文件

代码语言:javascript
运行
复制
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\vcvars64.bat

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

代码语言:javascript
运行
复制
C:\Program Files (x86)\Windows Kits\10\bin\x64

走到小路上。这就是rc.exe应该在的地方。然而,在我失败的机器上,rc.exe从这里丢失了,但是它确实存在于

代码语言:javascript
运行
复制
C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64

我回去后觉得这是一个设置问题,我重新运行了VS2015更新3安装程序,并告诉它添加

Windows和Web ->通用(1.4.1)和Windows10SDK (10.0.14393)

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

代码语言:javascript
运行
复制
C:\Program Files (x86)\Windows Kits\10\bin\x64

上运行rc -v

代码语言:javascript
运行
复制
C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64\rc.exe

代码语言:javascript
运行
复制
C:\Program Files (x86)\Windows Kits\10\bin\x64\rc.exe

给出相同的版本号10.0.10011.16384

不知道为什么rc.exe在最初的安装中丢失了,但是重新运行安装并添加另一个SDK为我修复了它。看起来像是

代码语言:javascript
运行
复制
C:\Program Files (x86)\Windows Kits\10\bin\x64\rc.exe

应该是默认的rc.exe,但它不是由以前的安装设置的。

票数 114
EN

Stack Overflow用户

发布于 2017-05-09 18:57:04

肯定不仅仅是你。我昨天安装了VS2017,这样做似乎在我的头上产生了同样的问题。我没有一个好的解决方案(这应该作为一个bug向微软报告),但我确实有一个棘手的解决办法。

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

代码语言:javascript
运行
复制
C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64 
to
C:\Program Files (x86)\Windows Kits\10\bin\x86

为我解决了这个问题。我的直觉是,这是一个注册表项被覆盖,但我还没有充分挖掘它,以确定。

票数 18
EN

Stack Overflow用户

发布于 2017-09-19 09:28:16

在Windows 10 15063.608中遇到了同样的问题(WindowsSDK10.0.15063.0)。适合我的解决方案是为Windows10kit二进制文件创建硬链接、创建x64和x86文件夹,如下所示(使用具有管理权限的命令提示符):

代码语言:javascript
运行
复制
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文件夹--看起来它们没有在使用。

P.S. mklink是一个CMD命令,在PowerShell下不可用

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43847542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档