【问题标题】:Visual Studio can't build due to rc.exe由于 rc.exe,Visual Studio 无法构建
【发布时间】:2012-12-31 14:46:48
【问题描述】:

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

我创建了一个空的 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 中也损坏了 :(
  • 但看起来问题在于 Windows SDK 目录(或 Windows 工具包,无论他们本周如何称呼它们)的路径。 $(WindowsSdkDir) 变量未设置为 WindowsKits 目录,而是设置为具有“最小”内容的 WindowsSDK 目录。
  • VS2017 引起的类似 VS2015 问题的良好解决方案:stackoverflow.com/a/45319119/508431
  • 请务必阅读 此关键 QA stackoverflow.com/questions/43847542

标签: visual-studio-2012


【解决方案1】:

在 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”)添加到 Global compiler settings > Programs > Additional Paths within Code::Blocks。

现在我可以无错误地构建和链接资源文件了。

【讨论】:

  • 谢谢,这是一种将 rc 可执行文件从 SDK bin 复制到 VS bin 的简单方法。
  • 嗯,这个答案大部分都是引号......所以只是为了澄清“我遇到了同样的问题,我通过这样做解决了:”不是我,而是我发现发布的东西
  • 问题:为什么使用x86 rc.exe 和rcdll.dll 文件,而不是x64 版本?
  • 我在 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 中解决此问题
  • 我在安装 PYANGBIND 时遇到了这个问题,并通过从 C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64 复制 rc 和 rcdll 并粘贴到 C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64 来解决它。
【解决方案2】:

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

例如开始菜单->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 选项

【讨论】:

  • 我想这是解决这个问题的正确方法。
  • 虽然我处于同样的情况(Win10 也安装了 VS2015 和 VS2017),但它对我不起作用。唯一为我解决的问题是将“C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin”(包含 rc.exe 的最后一个 SDK 版本)手动添加到 PATH !跨度>
  • @Scylardor - 您使用的路径用于 7.1 SDK。您是否在 C:\Program Files (x86)\Microsoft SDKs\Windows 下安装了 8.1 SDK?在您的情况下,可以使用与 7.1 相同的命令,或者您可能需要安装 8.1 SDK。
  • 我用call C:\\(....)\vcvarsall.bat" amd64 8.1start cmake-gui 创建了一个批处理文件,效果很好
  • 谢谢,设置完全相同(并排 VS),这比复制文件要干净!
【解决方案3】:

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

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

【讨论】:

  • 令人困惑的是,这对我也有用,从 v7.1A\Bin 复制到 Microsoft Visual Studio 14.0\VC\bin
  • 在安装了 VS 2017 和 VS 2015 的 Windows Server 2012 上,这对我不起作用。
  • 这也为我在 2021 年 6 月的 Windows 10 上修复了它。谢谢!
【解决方案4】:

如果 Visual C++ 编译器和 Windows 10 SDK 版本不对应于同一 Visual Studio 年份,则可能会出现此 rc.exe 错误。一般来说,解决方案是确保您的系统上有,并且正在编译,VC++ 和 Windows SDK 用于您正在使用的 Visual Studio 年份。

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

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

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

更新:我刚刚再次查看了 Build Tools 2015,显然不再有自定义安装选项。如果是这样,安装带有 C++ 和 Windows SDK 组件的 Visual Studio 2015 也应该可以工作。编辑:评论者找到了customizable build tools installer

【讨论】:

  • 非常感谢,这确实是正确的解决方案。注意:我尝试通过安装程序的“修改”命令添加 SDK,但卡住了。必须重新启动,卸载,然后从头开始安装。
  • 谁能帮助澄清“...重新安装它 [Build Tools 2015] 的含义,这次是自定义安装,选择同时安装 Visual C++ 和 Windows 10 SDK 组件。”从哪里安装?独立于微软?
  • 这是真实的、概念上正确的答案。所有其他都是可能无法工作的黑客;他们都没有为我做。
  • 这个 OMFG!感谢您的明确解释。我遇到了完全相同的问题,而指责安装的人是如此的红鲱鱼。我重新安装了五次,结果都一样。
  • 看起来您仍然可以在此处获得可自定义的 2015 安装程序:visualstudio.microsoft.com/vs/older-downloads
【解决方案5】:

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

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

【讨论】:

  • 已修复。谢谢。
【解决方案6】:

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

【讨论】:

  • 这些指令适用于 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\x64 复制到 C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64 以修复由于 rc.exe 错误导致 Visual Studio 无法构建
【解决方案7】:

就我而言,Windows 10 x64 上的 VS 2019, 我主要遵循答案中所说的内容,但将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所在的位置。

【讨论】:

  • 这对我有用,我需要让pip install brotlipy 工作。
【解决方案8】:

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

解决方案 1:
在运行 VC2013 之前,在记事本中的 NameOfYourSolution.vcxproj 文件中的元素“”中删除整行“...
解决方案 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)“Platform Toolset”(Project Property Pages –> Configuration Properties –> General)会自动设置为“Visual Studio 2013 (v120)”(不要改成“Visual Studio 2010”才能继续开发你的项目VC2013 概念下)

【讨论】:

    【解决方案9】:

    在我的情况下,错误是由于 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 的机器上运行。

    【讨论】:

      【解决方案10】:

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

      【讨论】:

        【解决方案11】:

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

        【讨论】:

          【解决方案12】:

          我最近遇到了这个问题。我安装了 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”等。

          【讨论】:

            【解决方案13】:

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

            希望这对某人有所帮助。

            【讨论】:

            • 您也可以在 `C:\Program Files (x86)\Windows Kits\10\bin` 中获取最新版本号。
            【解决方案14】:

            我在 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 目录中。没用。
            【解决方案15】:

            我正在使用带有 VS 2013(更新 3)的 Windows 7 和适用于 Fortran Windows 的 Intel Parallel Studio XE Composer 版本(更新 5)。开箱即用,我遇到了同样的问题。

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

            我通过更新 Intel 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\um;C:\Program Files (x86)\Windows Kits\8.0\Include\shared; p>

            【讨论】:

              【解决方案16】:

              我刚刚在我的 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 文件编译成可执行文件。
              【解决方案17】:

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

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

              【讨论】:

                【解决方案18】:

                这可能是由源自 Visual Studio 早期版本的 vcxproj 或在配置属性 -> 常规中更改平台工具集引起的。

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

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

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

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

                【讨论】:

                  【解决方案19】:

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

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

                  然后打开 Visual Studio x64 Native tools 命令提示符并输入

                  vcvarsall.bat

                  【讨论】:

                    【解决方案20】:

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

                    【讨论】:

                    • 这可能是对这个令人愤怒的问题的实际解释。这是关于这个问题的另一个最近的 QA,任何在这里谷歌搜索的人......stackoverflow.com/a/53804573/294884
                    【解决方案21】:

                    可能项目文件被 VS2017 触及。那么当你在 2015 年链接项目时,“LINK : fatal error LNK1158: cannot run 'rc.exe'” 会导致构建中断。

                    在 vcxproj 中尝试:

                    1) 替换:

                    &lt;WindowsTargetPlatformVersion&gt;10.0.17763.0&lt;/WindowsTargetPlatformVersion&gt; 和: &lt;WindowsTargetPlatformVersion&gt;8.1&lt;/WindowsTargetPlatformVersion&gt;

                    2) 删除: &lt;VCProjectVersion&gt;15.0&lt;/VCProjectVersion&gt;

                    3) 替换: &lt;PlatformToolset&gt;v141&lt;/PlatformToolset&gt; 和: &lt;PlatformToolset&gt;v140&lt;/PlatformToolset&gt;

                    【讨论】:

                      【解决方案22】:

                      当我尝试在 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' 作为其代理;即,带有 Visual Studio 2019 的 Windows Server 2019。

                      【讨论】:

                        【解决方案23】:

                        我也能够在 Windows 中以这种方式为我工作

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

                        C:\Program Files (x86)\Windows Kits\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 Creator
                        2. 清理并重建

                        【讨论】:

                          【解决方案24】:

                          我对这个问题的回答。

                          修改文件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 的支持以及所有 Visual Studio的构建目标,包括

                          • VS2015 x64 ARM Cross Tools 命令提示符
                          • VS2015 x64 原生工具命令提示符
                          • VS2015 x64 x86 跨工具命令提示符
                          • VS2015 x86 ARM Cross Tools 命令提示符
                          • VS2015 x86 原生工具命令提示符
                          • VS2015 x86 x64 跨工具命令提示符

                          他们都在工作。

                          【讨论】:

                            【解决方案25】:

                            就我而言,我通过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

                            【讨论】:

                              【解决方案26】:

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

                              【讨论】:

                                【解决方案27】:

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

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

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

                                【讨论】:

                                  【解决方案28】:

                                  这里有很多答案,但我没有看到这个,我相信这是修复这个 Visual Studio 错误的正确方法。我最近不得不在已经拥有 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
                                  

                                  如果 108.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,因此您可能不知道您正在使用哪个 - 特别是如果您有多个开发人员和构建机器。最好在项目中修复它。

                                  要解决这个问题,

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

                                  双击顶部的空白行,对于 x86/win32 项目,将其添加到调试和发布配置中:

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

                                  对于 x64 项目,将其添加到调试和发布配置中:

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

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

                                  我不必更新“库目录”或“包含目录”,但它们可能需要进行类似的更改。

                                  这将在每个 Visual Studio 项目文件中创建多个条目,如下所示:

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

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

                                  【讨论】:

                                    猜你喜欢
                                    • 2016-05-14
                                    • 1970-01-01
                                    • 2019-04-22
                                    • 2021-12-24
                                    • 2015-06-02
                                    • 2017-04-25
                                    • 2012-10-31
                                    • 1970-01-01
                                    • 1970-01-01
                                    相关资源
                                    最近更新 更多