由于rc.exe,Visual Studio无法构建

时间:2013-01-17 05:27:19

标签: visual-studio-2012

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

我创建了一个空的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进行托管实现,所以我希望有人有个想法。

27 个答案:

答案 0 :(得分:179)

在Google上发现这一点...我认为在您的情况下,您可以将rc.exercdll.dll复制到visual studio 2012\vc\bin或安装在任何地方:

第2部分:修复链接: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

或者我也发现了这个:
微软从他们的MSVT包中留下了一些东西。由于没有人知道他们是因为错误还是出于执照原因而被遗漏,因此MSVC的任何人都没有兴趣将他们拒之门外。一些谷歌搜索发现了一些棘手的来源。幸运的是,微软最终已经结束并解决了这个问题以及更多问题。

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中的其他路径。
  3. 现在我可以无错误地构建和链接资源文件。

答案 1 :(得分:53)

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

e.g。开始菜单 - > Visual Studio 2015-> VS2015 x64 Native Tools命令提示符

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

注意结尾的8.1选项

答案 2 :(得分:28)

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

我遇到了同样的问题,上面发布的解决方案无效。我的解决方案源自它,它对我有用,如果上面的那些不起作用你可以尝试这个。

答案 3 :(得分:16)

如果Visual C ++编译器和Windows 10 SDK版本与同一Visual Studio年份不对应,则会发生此rc.exe错误。

如果您有Visual Studio 2017,并且安装了Build Tools 2015而未选择安装自己的2015 Windows SDK(默认安装不安装它!),并且正在尝试使用它进行编译,则可能会遇到此问题

在我的情况下,我已经有了Visual Studio 2017.当我尝试使用Build Tools 2015来编译python库(或者可能是任何程序)时,发生了同样的'rc.exe'错误。我读到如果尝试使用Visual Studio 2017中的Windows 10 SDK,VS2015 14.0 C ++编译器会出现故障。

我卸载了Build Tools 2015,并重新安装了它,这次是作为自定义安装,选择安装两个 visual C ++和Windows 10 SDK组件。这解决了这个问题。

答案 4 :(得分:11)

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

很抱歉,我无法复制并粘贴此块,但stackoverflows编码格式不允许这样做。

答案 5 :(得分:6)

我在Windows 7 x64和 Visual Studio 2017 上。我试图编译一个cython脚本时遇到此错误。 这就是我的解决方法: 我从以下位置复制并粘贴了 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\x86_amd64

答案 6 :(得分:4)

这是我几乎相似的案例:
我在Win7 32bit下有VC2010工作项目。我在Win8.1 64bit下干净安装VC2013 在将我的项目从VC2010成功转换为VC2013后,在第一次编译期间,以下错误上升:
完成生成代码
链接:致命错误LNK1158:无法运行'rc.exe'

解决方案1:
在记事本的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概念下的项目)

答案 7 :(得分:4)

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

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

<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的计算机上运行。

答案 8 :(得分:3)

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

答案 9 :(得分:3)

我使用的是Windows 10 x64和Visual Studio 2017.我从以下位置复制并粘贴了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 creator 5.7.1)

答案 10 :(得分:2)

就我而言,是Windows 10 x64上的VS 2019, 我主要按照答案中的说法,但是将devpackage.jsonHOST=0.0.0.0粘贴到 "scripts": { "build": "rollup -c", "dev": "HOST=0.0.0.0 rollup -c -w", "start": "sirv public" }, 所在的npm run dev

答案 11 :(得分:2)

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

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

httpd

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

答案 12 :(得分:2)

我使用Windows 7与VS 2013(更新3)和英特尔Parallel Studio XE编译器版本用于Fortran Windows(更新5)。开箱即用我有同样的问题。

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

我通过更新英特尔编写器选项(TOOLS-&gt;选项...-&gt;英特尔Composer XE-&gt; Visual Fortran-&gt;编译器)纠正了这两个问题。

对于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-&gt; Options ...区域。

对于win32和x64选项卡

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

答案 13 :(得分:2)

我在VS 2013上遇到了同样的问题,并且能够通过更改Platform Toolset来修复它。

您可以在项目设置中找到它。一般。

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

您可以通过将此添加到预建事件来检查使用的SDK路径:

echo using SDK $(WindowsSdkDir)

答案 14 :(得分:2)

我最近遇到了这个问题。我同时安装了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.17763.0 \ x86”的符号链接“ x86”,“ 10.0.17763.0 \ x64”的符号链接“ x64”等。

答案 15 :(得分:1)

这比Visual Studio 2017更容易。请按照以下说明操作:https://docs.microsoft.com/en-us/visualstudio/install/modify-visual-studio以使用Microsoft Visual Studio Installer进行修改。

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

答案 16 :(得分:1)

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

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

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

您可以使用

轻松设置环境变量

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

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

答案 17 :(得分: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兼容。

答案 18 :(得分:1)

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

  

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

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

  

vcvarsall.bat

答案 19 :(得分:1)

这可能是由以前版本的Visual Studio中的vcxproj引起的,或者是在配置属性中更改平台工具集 - &gt;一般

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

1)转到配置属性 - &gt; VC ++目录

2)选择可执行目录的下拉列表

3)选择&#34;继承父项目或项目默认值&#34;

答案 20 :(得分:0)

对于我来说,我是通过Visual Studio 2015-> 修改安装了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

答案 21 :(得分:0)

也许项目文件被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>

答案 22 :(得分:0)

对于Visual Studio社区2019,将上面答案(C:Users/arpchauh/PycharmProjects/post_blog/blogs>python manage.py runserver python: can't open file 'manage.py': [Errno 2] No such file or directory )中的文件复制到rc.exe rcdll.dll对我来说很成功。

答案 23 :(得分:0)

尝试在Azure DevOps管道中的bash任务中执行rc.exe时,我遇到了关于pip install的OP链接错误,我正在使用该Azure DevOps管道通过C ++从源代码构建Python包扩展名。我可以通过在调用rc.exe之前在bash任务中将路径添加到pip install来解决此问题,就像这样:

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

位于Azure job中,该Azure vmImage: 'windows-2019'为其代理使用;即带有Visual Studio 2019的Windows Server 2019。

答案 24 :(得分:0)

我在Windows 10 Pro x64,VS 19上。

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

10

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

72

我必须从那里复制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

希望这对某人有帮助。

答案 25 :(得分:0)

“错误LNK1158无法运行'rc.exe”可能是由于您的项目是由较新的MS VS版本打开的。例如,您的项目是在VS 2015中创建的,然后在2017年之前打开。然后在2015年打开您的项目。

要解决此问题,请打开yourProjectName.vcxproj,查找 WindowsTargetPlatformVersion ,然后更改为正确的VS版本

对于VS 2015,应为8.1 对于VS 2017,应为10.0.17763.0

答案 26 :(得分:0)

我对这个问题的回答。

修改文件C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\vcvarsqueryregistry.bat :GetWin10SdkDir的内容 来自

@REM ---------------------------------------------------------------------------
:GetWin10SdkDir

@call :GetWin10SdkDirHelper HKLM\SOFTWARE\Wow6432Node > nul 2>&1
@if errorlevel 1 call :GetWin10SdkDirHelper HKCU\SOFTWARE\Wow6432Node > nul 2>&1
@if errorlevel 1 call :GetWin10SdkDirHelper HKLM\SOFTWARE > nul 2>&1
@if errorlevel 1 call :GetWin10SdkDirHelper HKCU\SOFTWARE > nul 2>&1
@if errorlevel 1 exit /B 1
@exit /B 0

@REM ---------------------------------------------------------------------------
:GetWin10SdkDir

@call :GetWin10SdkDirHelper HKLM\SOFTWARE\Wow6432Node > nul 2>&1
@if errorlevel 1 call :GetWin10SdkDirHelper HKCU\SOFTWARE\Wow6432Node > nul 2>&1
@if errorlevel 1 call :GetWin10SdkDirHelper HKLM\SOFTWARE > nul 2>&1
@if errorlevel 1 call :GetWin10SdkDirHelper HKCU\SOFTWARE > nul 2>&1
@if errorlevel 1 exit /B 1
@setlocal enableDelayedExpansion
set HostArch=x86
if "%PROCESSOR_ARCHITECTURE%"=="AMD64" ( set "HostArch=x64" )
if "%PROCESSOR_ARCHITECTURE%"=="EM64T" ( set "HostArch=x64" )
if "%PROCESSOR_ARCHITECTURE%"=="ARM64" ( set "HostArch=arm64" )
if "%PROCESSOR_ARCHITECTURE%"=="arm" ( set "HostArch=arm" )
@endlocal & set PATH=%WindowsSdkDir%bin\%WindowsSDKVersion%%HostArch%;%PATH%
@exit /B 0

修改此单个位置将启用对所有Windows 10 SDK以及所有Windows 10的支持 建立Visual Studio的目标,包括

  • VS2015 x64 ARM交叉工具命令提示符
  • VS2015 x64本机工具命令提示符
  • VS2015 x64 x86交叉工具命令提示符
  • VS2015 x86 ARM交叉工具命令提示符
  • VS2015 x86本机工具命令提示符
  • VS2015 x86 x64交叉工具命令提示符

他们都在工作。