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

我在网上search,找不到任何类似于我的问题。

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

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里有什么地方可以指定在哪里可以find这个可执行文件? 我已经安装了Windows 7 SDK,我有这个可执行文件:

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

我来自Code :: Blocks并毫无困难地使用mingw-gcc,但最近我一直需要VS来pipe理实现,所以我希望有人有一个想法。

发现这在谷歌…我会假设你的情况下,你会复制rc.exercdll.dllvisual studio 2012\vc\bin或任何你有它安装:

第2部分:修复链接: fatal error LNK1158: cannot run 'rc.exe'

将其添加到PATH环境variables中:

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

或者我也find了这个:
微软在MSVT软件包中留下了一些东西。 由于没有人知道他们是由于错误还是出于许可证原因而被排除在外,没有任何MSVC的人有兴趣把它们分发出去。 几个谷歌search出现一些棘手的来源。 幸运的是,微软终于解决了这个问题,还有更多。

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

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

有很多的MSVT丢失的文件,但缺less的SDK文件不是。

和这个:
我有同样的问题,我解决了这样做:

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

现在我可以build立和链接资源文件没有错误。

从我发现,如果你有一个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,并将已复制的两个文件粘贴到其中。

我有同样的问题,并且上面张贴的解决scheme没有工作。 我的解决scheme是从它得来的,它对我来说,如果上面的那些不起作用,你可以试试这个。

在机器上安装VS2017之后,我们用CMake / Visual Studio 2015构build了这个问题。 在我们的例子中,正确的解决scheme是将Window Kit版本(8.1)指定给Visual Studio命令提示符,否则默认情况下会获得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选项

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

抱歉,我不能在这里复制和粘贴这个块,但是编码格式的栈溢出不允许。

这可能有点过时了。 但是,如果复制rc.exe和exdll.dll不起作用,即使Windows sdk文件夹存在,Windows sdk也可能没有正确安装。 你可以在下面的页面更新win 8的sdk: http : //msdn.microsoft.com/en-US/windows/hardware/hh852363重新安装sdk后,问题就解决了。 同时确保平台工具集设置正确。

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

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

在我的情况下,错误是由于在一个vcxproj糟糕的设置。 vcxproj来自第三方,所以我不知道它是如何得到这个状态。

具体而言,对于平台/configuration文件组合中的一个,Windows SDK bin文件夹中缺less平台文件夹:

 <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的解决scheme是错误的,因为你的项目不会在其他人的机器上工作。 如果您正确地修复了项目中的path,它应该可以在正确安装Windows SDK的任何计算机上运行。

我在VS 2013上遇到了同样的问题,并通过更改Platform Toolset来解决这个问题。

你可以在项目设置中find它,一般。

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

您可以通过添加到您的prebuild事件来检查使用哪个SDKpath:

 echo using SDK $(WindowsSdkDir) 

我正在使用Windows 7与VS 2013(更新3)和英特尔Parallel Studio XE作曲者版Fortran Windows(更新5)。 开箱,我有同样的问题。

一旦我修复了缺less的rc.exe问题,我有另一个问题。 链接器缺lesskernel32.lib。

我通过更新英特尔®Composer选项(TOOLS-> Options …-> Intel Composer XE-> Visual Fortran-> Compilers)更正了这两个问题。

对于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 \ C:\ Program Files(x86)\ Windows Kits \ 8.0 \ Include \ shared;

我只是在我的VS2010(SDK7.1)解决scheme(项目链接在一个顺序的线性依赖链中)中找出了一个(总共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\" 

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

如果您有Visual Studio 2017,并且在没有Windows SDK的情况下安装了Build Tools 2015,并且正在尝试使用它进行编译,则可能会遇到此问题。

我读了一些说VS2015 14.0 C ++编译器会尝试从Visual Studio 2017中使用Windows 10 SDK时出现问题。

在我的情况下,我已经有了Visual Studio 2017.当我尝试使用Build Tools 2015编译一个python库(或者可能是任何程序)时,这个相同的'rc.exe'错误popup。 我卸载了构build工具2015,并重新安装,这次是自定义安装,select安装Visual C ++和Windows 10 SDK组件。 这解决了这个问题。

如果有的话,我认为这表明如果Visual C ++编译器和Windows 10 SDK版本显然不对应相同的Visual Studio年,那么'rc.exe'错误很容易popup。

这可能是由Visual Studio以前版本中产生的vcxproj引起的,或者是在configuration属性 – >常规中更改平台工具集。

如果是,可能的解决scheme

1)转到configuration属性 – > VC ++目录

2)select下拉列表中的可执行目录

3)select“inheritance父项目或项目默认值”