由于 rc.exe,VisualStudio 无法生成

我在网上搜索了一下,没有找到任何与我的问题相似的东西。

我创建了一个空的 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中是否有我可以指定在哪里找到这个可执行文件的地方?我已经安装了 Windows7 SDK,并且我有这个可执行文件:

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

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

209653 次浏览

在谷歌上找到这个... ... 我假设在你的情况下,你会复制 rc.exercdll.dllvisual studio 2012\vc\bin或任何你安装它的地方:

第2部分: 修复环节: fatal error LNK1158: cannot run ‘rc.exe’

将其添加到 PATH 环境变量:

C: Program Files (x86) Windows Kit 8.0 bin x86

复制这些文件:

Rc.exe
Rcdll.dll

C: Program Files (x86) Windows Kit 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”)到全局编译器设置 > 程序 > 代码: : 块中的其他路径。

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

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

我在 VS 2013上遇到了同样的问题,通过改变 Platform Toolset就可以解决这个问题。

您可以在项目设置中找到它,将军。

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

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

echo using SDK $(WindowsSdkDir)

下面是我几乎类似的案例:
我有 VC2010工作项目下的 Win732位。我使清洁安装的 VC2013下的 Win8.164位 在成功地将我的项目从 VC2010转换到 VC2013之后,在第一次编译期间出现了以下错误:
生成代码完成
LINK: 致命错误 LNK1158: 无法运行‘ rc.exe’

解决方案1:
在运行 VC2013之前,在记事本中的 NameOfYourSolution.vcxproj 文件中的元素“ < PropertyGroup >”中删除整行“ < ExecutablePath Ordinance =”...”> ... ”
解决方案2:
只复制两个文件: rc.exe 和 rcdll.dll 从“ c: Program Files (x86) Windows Kit 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概念开发项目)

根据我的发现,如果你有一个 Windows 7操作系统,做下面的步骤可以解决这个问题:

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

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

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

我也遇到了同样的问题,上面发布的解决方案不起作用。我的解决方案来自它,它为我工作,如果上面的不工作,你可以给这一个尝试。

我正在使用 Windows 7和 VS 2013(更新3)以及英特尔平行 Studio XE Fortran Windows 作曲版(更新5)。打开盒子,我也有同样的问题。

一旦我修复了丢失的 rc.exe 问题,我就有了另一个问题。

我通过更新 Intel Composer Options (TOOLS-> Options...-> Intel Composer XE-> Visual Fortran-> Compilers)纠正了这两个问题。

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

可执行文件: C: Program Files (x86) Windows Kit 8.0 bin x86; < strong > (just before $(PATH))

库: C: Program Files (x86) Windows Kit 8.0 Lib win8 um x86; < strong > (在末尾)

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

可执行文件: C: Program Files (x86) Windows Kit 8.0 bin x64; < strong > (just before $(PATH))

库: C: Program Files (x86) Windows Kit 8.0 Lib win8 um x64; < strong > (在末尾)

更新。

我还缺少一些 SDK 头文件(winver.h 和 winapifamily.h)。我将以下内容添加到相同的工具-> 选项... 区域。

对于 win32和 x64标签

包括: C: 程序文件(x86) Windows 套件8.0包括嗯; C: 程序文件(x86) Windows 套件8.0包括共享;

我刚刚在我的 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 文件编译成可执行文件。

在我的例子中,错误是由于 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 所有的地方是错误的,因为您的项目将不能在其他任何人的机器上工作。如果正确地修复了项目中的路径,那么它应该可以在安装了正确的 WindowsSDK 的任何计算机上工作。

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

对不起,我不能复制和粘贴块在这里,但堆栈溢出编码格式不允许。

在机器上安装了 VS2017之后,我们在 CMake/Visual Studio 2015构建中遇到了这个问题。在我们的例子中,正确的解决方案是将 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选项

这可能是由于 vcxproj 起源于以前版本的 VisualStudio 或在配置属性-> 常规中更改了平台工具集。

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

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

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

3)选择「继承父项目或预设项目」

如果 VisualC + + 编译器和 Windows10SDK 版本不对应于相同的 VisualStudio 年份,则可能发生此 rc.exe错误。一般来说,解决方案是确保您的系统上有,并在编译,VC + + 和 Windows SDK 的一年,你使用的可视化工作室使用。

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

在我的例子中,我已经有了 VisualStudio2017。当我尝试使用 Build Tools 2015编译一个 python 库(或者任何程序)时,出现了同样的‘ rc.exe’错误。我读到如果 VS201514.0 C + + 编译器试图使用 Visual Studio 2017中的 Windows 10 SDK,它可能会出现故障。

我卸载了 Build Tools 2015,并重新安装了它,这次是作为 习俗安装,选择安装 都有 Visual C + + 和 Windows 10 SDK 组件。这就解决了问题。

更新: 我刚刚再次查看了 BuildTools2015,显然没有自定义安装选项了。如果是这样,使用 C + + 和 WindowsSDK 组件安装 VisualStudio2015也应该可以工作。编辑: 评论者找到了 可定制的构建工具安装程序

我使用的是 Windows7x64和 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

这甚至比使用 VisualStudio2017更容易。遵循以下说明: 使用 MicrosoftVisualStudioInstaller 修改 https://learn.microsoft.com/en-us/visualstudio/install/modify-visual-studio

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

我使用的是 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 create 5.7.1)

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

C: Program Files (x86) Windows Kit 8.1 bin x64

然后打开 VisualStudiox64Nativetools 命令提示符并输入

Vcvarsall.bat

如果您确实需要在 VisualStudio2015中使用 SDKWindows10,则必须在 Sdk 档案馆上下载较旧的版本。新版本的 SDK 更改了 rc 可执行文件的位置,并且 VisualStudio2015更新3(最新版本)的 MSBuild 无法找到它。 至少 SDK Windows 的版本10.0.14393.795仍然与 Visual Studio 2015兼容。

在我的示例中,我通过 Visual Studio 2015-> 修改安装了 Windows SDK 10586,然后安装了以下路径。

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

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

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

我最近遇到过这个问题,我安装了 VS 2015和 VS 2017,安装了 Windows 工具包8.1和10。

来自 VS2017的命令提示符正常工作,rc.exe 可见。 实际上,VS 2015的 vcvarsall.bat 脚本确实向 PATH 变量添加了一个到 Windows 10 kit 的路径,但是它添加了一个稍微错误的路径。它增加了路径

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

而实际的路径是

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

更新 Windows10工具包(或安装 VS2017)似乎导致了这个问题。

所以解决方案很简单: 只需在“ C: Program Files (x86) Windows Kit 10 bin”文件夹中创建指向底层文件夹中相应文件夹的符号链接,例如“10.0.17763.0 x86”文件夹的符号链接“ x86”,“10.0.17763.0 x64”文件夹的符号链接“ x64”等。

也许 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>

对于 Visual Studio Community 2019,复制上面答案(< code > rc.exe)中的文件 将 rcdll.dll )转换为 C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.21.27702\bin\Hostx86\x86就解决了这个问题

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

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

那是在 Azure job中,它使用 vmImage: 'windows-2019'作为代理; 也就是说,Windows Server 2019和 Visual Studio 2019。

我可以让它为我工作,也这样在窗口

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

C: Program Files (x86) Windows Kit 10 bin 10.0.18362.0 x86

你可以很容易地设定你的环境变量

C: > setx path”% path% ; C: Program Files (x86) Windows 工具包10 bin 10.0.18362.0 x86”

  1. 重新启动 Qt 创建程序
  2. 清洁及重建

我用的是 Windows10 Pro x64 VS19。

当尝试在 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 Kit 10 bin 10.0.18362.0 x86

然后加到

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

结果

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

希望这对谁有帮助。

“错误 LNK1158不能运行‘ rc.exe’”可能是由于您的项目被新的 MS VS 版本打开。例如,您的项目是在 VS2015中创建的,然后在2017年打开。然后你的项目将在2015年开放。

要解决这个问题,打开 yourProjectName.vcxproj,查找 WindowsTargetPlatformVersion,并更改为正确的 VS 版本

对于 VS 2015,它应该是8.1 对于 VS 2017,它应该是10.0.17763.0

在我的例子中,VS 2019在 Windows 10 x64上, 我大部分时间都是跟着答案走,但是把 rc.exercdll.dllC:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x86粘贴到 C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin,也就是 link.exe所在的位置。

我对这个问题的回答。

修改文件 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

修改这个位置将启用对所有 Windows10sdk 以及所有 建立视觉工作室的目标,包括

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

他们都在工作。

这里有很多答案,但我没有看到这一个,我相信这是修复这个 Visual Studio bug 的正确方法。我最近不得不在一个已经有 Visual Studio 2017和2019以及多个版本的 Windows SDK 的系统上安装 Visual Studio 2015。在构建 x86或 x64/debug 或发行版时,无法找到 RC.EXE。原因是项目的可执行路径($(VS_ExecutablePath))值不正确。对于 x86和 x64,设置为

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

这似乎是正确的,如果 10被取代的 8.1,但我想使用 Windows 10 SDK,而不是 Windows 8.1 SDK。

Windows 10 SDK 可执行文件实际上在这些目录中(也就是说,这些是我现在安装的 SDK) :

C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\arm64\rc.exe
C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64\rc.exe
C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x86\rc.exe
C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\arm64\rc.exe
C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x64\rc.exe
C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x86\rc.exe
C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\arm64\rc.exe
C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x64\rc.exe
C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x86\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
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin\RC.Exe
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin\x64\RC.Exe

在 Windows 10 SDK 中,TargetPlatformVersion是路径的一部分,它允许在每个新的 TargetPlatform发布时更新 SDK 可执行文件/include/libs。

选择一个 RC.EXE并将其复制到路径中的一个目录中是可行的,但是每个 TargetPlatformVersion SDK 目录都有一个不同的 RC.EXE,所以您可能不知道正在使用哪个 RC.EXE——特别是如果您有多个开发人员和构建机器。最好在项目中修复它。

为了解决这个问题,

  • 使用 Shift-Click 选择所有受影响的项目
  • 右键单击选定的项目并选择“属性”,
  • 在左边选择 VC + + 目录
  • 选择可执行目录
  • 单击最右边的下拉菜单并选择 Edit。

双击顶部空白行,对于 x86/win32项目,将其添加到 Debug 和 Release 配置中:

  $(WindowsSdkDir)bin\$(TargetPlatformVersion)\x86\

对于 x64项目,在 Debug 和发布配置中都添加以下内容:

  $(WindowsSdkDir)bin\$(TargetPlatformVersion)\x64\

选中“从父项目或项目继承默认值”。“评估值”窗口可能出现混乱,但似乎得到修复后,您保存和关闭属性页。

我没有更新“图书馆目录”或“包括目录”,但他们可能需要类似的变化。

这将使每个 VisualStudio 项目文件中的许多条目如下所示:

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ExecutablePath>$(WindowsSdkDir_10)bin\$(TargetPlatformVersion)\x86\;$(ExecutablePath)</ExecutablePath>
</PropertyGroup>

解决这个问题的正确方法是编辑 Microsoft.Cpp.Win32.user的属性表,或者定义自己的属性表,将这个值添加到继承的值中,但是 Visual Studio 2015的属性管理器似乎有问题(2017/2019更好) ,所以我发现最好直接将这个值放到项目中。这也意味着只要安装了所选择的 Windows10SDK,使用这些项目的所有其他开发人员或构建机器都能够构建。