由于rc.exe,Visual Studio无法生成


128

我已经在网上搜索过,却找不到与我的问题相似的内容。

我创建了一个空的C ++项目,并添加了带回车的main.cpp,但无法构建它。这是我收到的消息:

1>------ Build started: Project: Project1, Configuration: Debug Win32 ------
1>LINK : fatal error LNK1158: cannot run 'rc.exe'
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

VS2012中是否可以在哪里指定可以在哪里找到此可执行文件?我已经安装了Windows 7 SDK,并且在以下位置具有此可执行文件:

C:\Program Files\Microsoft SDKs\Windows\v7.0\Bin

我来自Code :: Blocks,使用mingw-gcc时没有任何麻烦,但是最近我一直需要使用VS来实现托管实现,所以我希望有人有一个想法。


仅供参考-也在Visual Studio 2013 Professional中损坏:(
gbjbaanb

但问题似乎出在Windows SDK目录(或Windows Kit,无论他们本周称其为什么)的路径。$(WindowsSdkDir)var未设置为WindowsKits目录,而是设置为WindowsSDK目录,该目录具有“最小”内容。
gbjbaanb

3
对于由VS2017引起的类似VS2015问题的良好解决方案: stackoverflow.com/a/45319119/508431
Isaiah Norton

1
请务必阅读本重要质量检查 stackoverflow.com/questions/43847542
Fattie,

Answers:


242

在Google上找到了此文件...我想假设您要复制rc.exe并安装rcdll.dllvisual studio 2012\vc\bin任何位置:

第2部分:FIX LINK: fatal error LNK1158: cannot run ‘rc.exe’

将此添加到您的PATH环境变量:

C:\ Program Files(x86)\ Windows Kits \ 8.0 \ bin \ x86

复制这些文件:

rc.exe
rcdll.dll

C:\ Program Files(x86)\ Windows Kits \ 8.0 \ bin \ x86

C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ VC \ bin

或者我也发现了这一点:
Microsoft在MSVT软件包中遗漏了一些东西。由于没有人知道是由于错误还是出于许可原因而将其遗漏,因此没有MSVC的人对将其分发出去很感兴趣。一些Google搜索会带来一些棘手的来源。幸运的是,Microsoft终于明智了,并解决了这个问题以及更多其他问题。

http://msdn.microsoft.com/vstudio/express/support/faq/default.aspx#pricing

http://msdn.microsoft.com/vstudio/express/support/install/

MSVT缺少大量文件,但缺少缺少SDK文件。

这是
我遇到的同样的问题,可以通过执行以下操作解决:

  1. 安装Microsoft .Net Framework 2.0
  2. 将.NET Framework文件的路径(对我而言为“ C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727”)添加到全局编译器设置>程序> Code :: Blocks中的其他路径。

现在,我可以构建和链接资源文件而不会出现错误。


6
谢谢,这是将rc可执行文件从SDK bin复制到VS bin的简单方法。
Patrick.SE 2013年

好吧,大多数答案都是引号...所以只是为了澄清“我遇到了同样的问题,可以通过这样做解决:”不是我,而是发现的东西
Kat Cox

1
问题:为什么使用x86 rc.exe和rcdll.dll文件而不是x64版本?
卡尔,

1
好吧,我只是复制并粘贴了找到的答案...但是您将在32位安装中使用x86(甚至在64位系统上可能会使用x86),而在64位安装中使用x64 ...猜测取决于它说您应该具有的文件版本
Kat Cox

2
我在C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64执行命令:copy "C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\x64\rc.exe"copy "C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\x64\rcdll.dll"在Visual Studio 2015中解决此问题
Jari Turkia

61

在计算机上也安装了VS2017之后,我们使用CMake / Visual Studio 2015版本解决了此问题。在我们这种情况下,正确的解决方案是为Visual Studio命令提示符指定Window Kit版本(8.1)-否则,您将默认获得Windows 10 Kit,该Windows 10 Kit在bin目录中不包括rc.exe。

例如,开始菜单-> Visual Studio 2015-> VS2015 x64本机工具命令提示符

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

注意最后的8.1选项


5
我认为这是解决此问题的正确方法。
jagttt

2
尽管我处在相同的情况下(还安装了带有VS2015和VS2017的Win10),但它对我不起作用。唯一为我修复的问题是手动将“ C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.1A \ Bin”(最后一个包含rc.exe的SDK版本)添加到PATH中!
Scylardor

@Scylardor-您使用的路径用于7.1 SDK。是否在C:\ Program Files(x86)\ Microsoft SDKs \ Windows下安装了8.1 SDK?在您的情况下,可以在最后使用与7.1相同的命令,或者您可能需要安装8.1 SDK。
MattAU '18

我使用call C:\\(....)\vcvarsall.bat" amd64 8.1和创建了一个批处理文件start cmake-gui,其工作方式像一个
Marius

谢谢,有完全相同的设置(并排侧VS),这是很多不是围绕复制文件清理!
E. Moffat

32

根据我的发现,如果您使用的是Windows 7操作系统,请执行以下步骤可以解决此问题:

1)转到C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.1A \ Bin

2)然后从该文件复制RC.exe和RcDll

3)转到C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ VC \ bin并将已复制的两个文件粘贴到其中。

我遇到了同样的问题,上面发布的解决方案不起作用。我的解决方案是从中得出的,它对我有用,如果上述方法不起作用,可以尝试一下。


4
令人莫名其妙的是,这也对我有用,从v7.1A \ Bin复制到Microsoft Visual Studio 14.0 \ VC \ bin
转义字符'17

这并没有为我Windows Server 2012中与VS 2017年安装VS一起工作,2015年
iLikeDirt

18

这个 rc.exe如果Visual C ++编译器和Windows 10 SDK版本与同一Visual Studio年不对应,则可能发生错误。通常,解决方案是确保您已在系统上使用并在正在使用的Visual Studio的编译,VC ++和Windows SDK中使用。

例如,如果您拥有Visual Studio 2017或2019,并且在未选择安装自己的2015 Windows SDK的情况下安装了Build Tools 2015(默认安装不会安装它!),并尝试使用它进行编译,则可能会遇到这个问题。

就我而言,我已经有Visual Studio2017。当我尝试使用Build Tools 2015编译python库(或可能是任何程序)时,发生了相同的“ rc.exe”错误。我阅读到VS2015 14.0 C ++编译器尝试使用Visual Studio 2017中的Windows 10 SDK时可能会出现故障。

我卸载构建工具2015年,并重新安装它,这个时候作为一个自定义安装,选择要安装两个 VISUAL C ++和Windows 10 SDK组件。这解决了问题。

更新:我只是再次查看了Build Tools 2015,显然没有自定义安装选项了。如果是这样,则还可以使用带有C ++和Windows SDK组件的Visual Studio 2015进行安装。


2
非常感谢,这确实是正确的解决方案。注意:我尝试通过安装程序的“修改”命令添加SDK,但是它卡住了。必须重新启动,卸载,然后从头开始安装。
紫罗兰色长颈鹿

任何人都可以帮助澄清“ ...重新安装它[Build Tools 2015],这次是自定义安装,选择同时安装Visual C ++和Windows 10 SDK组件。” 从哪里安装?作为Microsoft的独立用户?
estebro

@estebro如果您搜索“ Build Tools 2015”并单击第一个链接,则将转到该独立软件包的Microsoft下载页面。下载并安装软件包,但是,如果遇到rc.exe问题,请不要默认安装该软件包。INSTEAD,选择一个自定义安装,并确保启用 Windows SDK的安装(它不是默认设置)。
OrangeSherbet

1
这是正确的,概念上正确的答案。其他所有都是可能无法使用的骇客;他们都没有为我做。
iLikeDirt

1
这个OMFG!感谢您的明确解释。我碰到了完全相同的问题,而指责安装的人就是这样一个红鲱鱼。我重新安装了五次,看到了相同的结果。
Ananth

11

就我而言,我在VS2015和VS2017中创建的项目之间存在混合匹配错误。在我的.vcxproj文件中,有一个名为PropertyGroup Label =“ Globals”>的部分。我有一个针对TargetPlatformVersion = 10.0.15063.0的部分。当我删除TargetPlatformVersion时,就解决了问题。

抱歉,我无法在此处复制和粘贴该块,但是stackoverflows编码格式不允许这样做。


这个固定的。谢谢。
My1

7

我在Windows 7 x64和Visual Studio 2017上。我在尝试编译cython脚本时遇到此错误。那就是我解决的方法:我从以下位置复制并粘贴了rc.exercdll.dll

C:\Program Files (x86)\Windows Kits\8.1\bin\x86

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64

3
这些指令适用于32位。对于64位,尽量C:\Program Files (x86)\Windows Kits\8.1\bin\x64C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64
康坦戈

对于使用Cython的用户而言,这可行:我们复制了C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x64C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64修复由于rc.exe错误而导致Visual Studio无法构建的问题
Brandon W. King

4

这是我几乎类似的情况:
我有Win7 32bit下的VC2010工作项目。我在Win8.1 64bit下全新安装了VC2013,将项目从VC2010成功转换为VC2013后,在第一次编译过程中出现以下错误:
完成生成代码
LINK:致命错误LNK1158:无法运行rc.exe

解决方案1:
删除运行VC2013
解决方案2之前,记事本中的NameOfYourSolution.vcxproj文件中元素“ <PropertyGroup>”中的整行“ <ExecutablePath Condition =” ...”> ... </ ExecutablePath>”在运行VC2013 解决方案2之前:
仅复制两个文件:rc.exe和rcdll.dll从“ c:\ Program Files(x86)\ Windows Kits \ 8.1 \ bin \ x86 \”到“ c:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ VC \ bin \”中,编译将是成功!!
注意:
a)不需要触摸任何PATH或其他Windows或VC环境变量。
b)“平台工具集”(项目属性页->配置属性->常规)将自动设置为“ Visual Studio 2013(v120)”(而不是更改为“ Visual Studio 2010”,以便能够继续开发您的项目)在VC2013概念下)


4

在我的情况下,该错误是由于vcxproj中的错误设置引起的。vcxproj来自第三方,因此我不确定它如何进入该状态。

具体来说,对于平台/配置文件组合之一,Windows SDK bin文件夹中缺少platform文件夹:

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
 <ExecutablePath>$(VCInstallDir)bin\x86_amd64;$(VCInstallDir)bin;$(WindowsSdkDir)bin\NETFX 4.0 Tools;$(WindowsSdkDir)bin\x86;

是正确的

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
 <ExecutablePath>$(VCInstallDir)bin\x86_amd64;$(VCInstallDir)bin;$(WindowsSdkDir)bin\NETFX 4.0 Tools;$(WindowsSdkDir)bin;

是不正确的。可能需要滚动到代码框的末尾才能看到区别。

另请注意,由于某些奇怪的原因,$(WindowsSdkDir)bin \ x64; 没有为我工作。试图弄清楚为什么,当rc.exe确实存在于该文件夹中时,我放弃了。

我认为,以前发布者涉及到处复制rc.exe的解决方案是错误的,因为您的项目无法在其他任何人的计算机上运行。如果您正确地修复了项目中的路径,那么它在任何安装了Windows SDK的计算机上都可以正常工作。


4

我使用的是Windows 10 x64和Visual Studio2017。我从以下位置复制并粘贴了rc.exe和rcdll.dll:

C:\Program Files (x86)\Windows Kits\8.1\bin\x86

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

适用于:( qt创作者5.7.1)


3

这可能有点过时了。但是,如果无法复制rc.exe和exdll.dll,则即使存在Windows sdk文件夹,也可能无法正确安装Windows sdk。您可以在以下页面中为win 8更新sdk:http : //msdn.microsoft.com/zh-cn/windows/hardware/hh852363 重新安装sdk之后,问题将得到解决。还要确保正确设置了平台工具集。


3

我最近遇到了这个问题。我同时安装了VS 2015和VS 2017,并安装了Windows套件8.1和10。

VS 2017中的命令提示符按预期工作,可见rc.exe。在VS 2015中,情况并非如此。实际上,VS 2015中的vcvarsall.bat脚本确实将Windows 10工具包的路径添加到PATH变量,但是它添加了一条稍微错误的路径。它为

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

而实际路径是

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

似乎更新Windows 10工具包(或安装VS 2017)导致了此问题。

因此解决方案很简单:只需在“ C:\ Program Files(x86)\ Windows Kits \ 10 \ bin”文件夹中创建指向基础文件夹中相应文件夹的符号链接,例如,文件夹“ 10.0”的符号链接“ x86” .17763.0 \ x86”,“ 10.0.17763.0 \ x64”的“ x64”等。


2

我在VS 2013上遇到了同样的问题,可以通过更改来解决Platform Toolset

您可以在常规项目设置中找到它。

例如,切换Platform Toolset到VS 2010将导致VS使用Windows \ v7.0A SDK。

您可以通过将其添加到预构建事件中来检查使用哪个SDK路径:

echo using SDK $(WindowsSdkDir)

但这仍然意味着VS2013根本不支持MFC应用程序。请注意,rc.exe位于“ Windows Kits”目录中,而不再位于SDK目录中。无用。
gbjbaanb 2014年

2

我正在将Windows 7与VS 2013(更新3)和用于Fortran Windows(更新5)的英特尔Parallel Studio XE Composer Edition一起使用。开箱即用,我有同样的问题。

修复丢失的rc.exe问题后,我又遇到了另一个问题。链接器缺少kernel32.lib。

我通过更新英特尔Composer选项(工具->选项...->英特尔Composer XE-> Visual Fortran->编译器)解决了这两个问题。

对于Win32选项卡,我添加了:

可执行文件: C:\ Program Files(x86)\ Windows Kits \ 8.0 \ bin \ x86; (就在$(PATH)之前)

库: C:\ Program Files(x86)\ Windows Kits \ 8.0 \ Lib \ win8 \ um \ x86; (在末尾)

对于x64选项卡,我添加了:

可执行文件: C:\ Program Files(x86)\ Windows Kits \ 8.0 \ bin \ x64; (就在$(PATH)之前)

库: C:\ Program Files(x86)\ Windows Kits \ 8.0 \ Lib \ win8 \ um \ x64; (在末尾)

更新中...

我也缺少一些SDK头文件(winver.h和winapifamily.h)。我将以下内容添加到同一TOOLS-> Options ...区域。

对于win32和x64选项卡

包括: C:\ Program Files(x86)\ Windows Kits \ 8.0 \ Include \ um; C:\ Program Files(x86)\ Windows Kits \ 8.0 \ Include \ shared;


2

我只是在我的VS2010(SDK7.1)解决方案中找出了一个项目(总共3个)(项目按顺序线性依赖关系链链接),项目文件中有一个.rc文件为空。从项目中删除空的.rc文件(而不删除该文件)解决了“致命错误LNK1158:... cvtres.exe”问题。

更新:以下副本解决了该问题:

xcopy "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe" "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_amd64\"

这将使WinSDK7.1通过MSBuild能够将.rc文件编译为可执行文件。


顺便说一句,以下副本解决了该问题:xcopy“ C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ VC \ bin \ cvtres.exe”“ C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ VC \ bin \ x86_amd64 \“这将使WinSDK7.1通过MSBuild能够将.rc文件编译为可执行文件。
Sterge

2

这甚至比使用Visual Studio 2017更容易。请按照以下说明进行操作:https : //docs.microsoft.com/zh-cn/visualstudio/install/modify-visual-studio以使用Microsoft Visual Studio安装程序进行修改。

进入Microsoft Visual Studio安装程序后,单击已安装的Visual Studio程序包下的“修改”,确保选中“使用C ++进行桌面开发”,并在“摘要”下确保MFC和ATl支持(x86和x64)。


1

这可能是源于Visual Studio早期版本的vcxproj,或者是在“配置属性”->“常规”中更改了平台工具集。

如果是这样,可能的解决方案:

1)转到配置属性-> VC ++目录

2)为可执行目录选择下拉菜单

3)选择“从父​​级或项目默认值继承”


1

添加到环境变量窗口sdk 8.1路径

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

然后打开Visual Studio x64本机工具命令提示符并输入

vcvarsall.bat


1

如果确实需要将SDK Windows 10与Visual Studio 2015一起使用,则必须在sdk-archive上下载旧版本。较新版本的SDK更改了rc可执行文件的位置,Visual Studio 2015 Update 3(最新版本)的MSBuild无法找到它。至少SDK Windows的版本10.0.14393.795仍与Visual Studio 2015兼容。


这可能是对此令人毛骨悚然的问题的实际解释。这是该问题的又一次近期质量检查,适用于在此处搜索的任何人........ stackoverflow.com/a/53804573/294884
Fattie

1

也许项目文件被VS2017感动了。然后,当您在2015年链接该项目时,“ LINK:致命错误LNK1158:无法运行'rc.exe'”会使构建停止。

在vcxproj中尝试:

1)更换:

<WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion> 与: <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>

2)移除: <VCProjectVersion>15.0</VCProjectVersion>

3)替换 <PlatformToolset>v141</PlatformToolset> 为: <PlatformToolset>v140</PlatformToolset>


1

rc.exe当尝试在Azure DevOps管道中pip installbash任务中执行任务时,我遇到了OP的链接错误,该错误用于从带有C ++扩展的源代码构建Python包。我能够通过在调用之前rc.exebash任务内部添加路径来解决该问题pip install,如下所示:

PATH="/c/Program Files (x86)/Windows Kits/10/bin/10.0.18362.0/x64":$PATH

那是在用于其代理程序的Azure jobvmImage: 'windows-2019'。即Windows Server 2019和Visual Studio 2019。


1

我也可以在Windows中以这种方式使其工作

  1. 假设您使用的是x86版本,请将环境变量设置为指向rc.exe的位置

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

您可以使用以下命令轻松设置环境变量

C:> setx路径“%path%; C:\ Program Files(x86)\ Windows Kits \ 10 \ bin \ 10.0.18362.0 \ x86”

  1. 重新启动您的Qt Creator
  2. 清理并重建

0

就我而言,我通过Visual Studio 2015-> Modify安装了Windows SDK 10586 ,然后安装了以下路径。

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

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

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


0

对于Visual Studio Community 2019,将上面答案中的文件(rc.exe rcdll.dll)复制C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.21.27702\bin\Hostx86\x86为我有用。


0

我在Windows 10 Pro x64,VS 19上。

尝试在cmd中为Apache安装mod_wsgi时。

C:\>python -m pip install mod_wsgi

这是我从命令提示符中得到的错误。

LINK : fatal error LNK1158: cannot run 'rc.exe'

error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\BIN\\x86_amd64\\link.exe' failed with exit status 1158

我不得不从复制rc.exe和rcdll.dll

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

并将其添加到

C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ VC \ bin \ x86_amd64

来自cmd的结果

C:\>python -m pip install mod_wsgi
Collecting mod_wsgi
Using cached mod_wsgi-4.7.1.tar.gz (498 kB)
Installing collected packages: mod-wsgi
Running setup.py install for mod-wsgi ... done
Successfully installed mod-wsgi-4.7.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.