16

我正在尝试在 Visual Studio 中为 64 位平台编译一个简单的程序。尝试编译时,出现错误: LINK : fatal error LNK1158: cannot run 'rc.exe'

我去过许多讨论线程,其中表明将 rc.exe 和 rcdll.dll 从 Windows Kits 文件夹复制到 VC/bin 文件夹。我这样做无济于事。我突然想到,我的 Visual Studio 版本可能只是没有在我认为它正在寻找这个 rc.exe 文件的目录中查找。有没有办法在 Visual Studio 中识别它正在寻找这个可执行文件的目录?

(有人建议,此问题可能与无法使用 VC++/VS2010 针对 x64 编译:LNK1158: cannot run cvtres.exe中提供的问题和答案重复。但是,情况似乎并非如此,因为在那里,路径被系统上运行的某些 NV 服务损坏。我没有遇到这个问题,因为当我键入 echo %PATH% 时会显示我的完整路径。话虽如此,该链接确实引导我找到正确的解决方案,给定以下)

4

3 回答 3

28

错误确实是我放置 rc.exe 和 rcdll.dll 文件的位置。因为我正在编译到 64 位平台,所以 Visual Studio 使用的是 64 位“交叉编译器”,它不在$(VSInstallDir)\VC\bin 中,而是在 $(VSInstallDir)\VC\bin 中\x86_amd64 文件夹。

因此,我的问题的解决方案是将 rc.exe 和 rcdll.dll 从 C:\Program Files (x86)\Windows Kits\8.1\bin\x86 文件夹复制到 $(VSInstallDir)\VC\bin\x86_amd64 文件夹.

这样做克服了第一个错误。

但是,在构建时,弹出一个新错误:LNK1158: cannot run 'cvtres.exe'。与我的第一个 rc.exe 错误相比,这个文件实际上已经存在于 $(VSInstallDir)\VC\bin 文件夹中。问题是交叉编译器在它自己的目录中寻找它。所以我只是将该文件从 $(VSInstallDir)\VC\bin 文件夹复制到 $(VSInstallDir)\VC\bin\x86_amd64 文件夹。

一旦我这样做了,我的项目就构建并运行了。

于 2016-02-06T18:13:12.530 回答
19

我在在 anaconda3 上复制的 VS2015 windows 10 中编译 python 代码时遇到了这个错误。

rc.exe

rcdll.dll

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

并粘贴到 Visual Studio 安装文件夹中

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

成功生成代码。

于 2018-09-30T16:49:00.163 回答
0

将环境变量设置为包含丢失文件的文件夹绝对更简单,而不是复制。

set WINKITS="C:\\Program Files (x86)\\Windows Kits\\8.0\\bin\\x86"
set PATH=%WINKITS%;%PATH%

使用您自己的Windows 工具包版本更改8.0

于 2020-08-30T18:28:30.847 回答