TRK0005错误定位rc.exe构建VC++ 2015项目。

23

我有一个VS 2015的C++项目(64位Windows 10 + Windows 10 SDK)。

如果使用项目属性>常规>目标平台版本设置为“8.1”,则一切都建立良好。

当我将它更改为“10.0.15063.0”时,我遇到了这个错误:

Error TRK0005 Failed to locate: "rc.exe". The system cannot find the file specified.

我从其他帖子中看到解决方法是将exe文件粘贴到某个可以被找到的地方。我正在寻找更稳定的解决方法(例如,版本控制)。

当设置为8.1时,$(WindowsSDK_ExecutablePath)宏包括此路径:

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

带有rc.exe。

当设置为10.0.15063.0时,宏中的路径中没有rc.exe。如果我将此路径添加到可执行目录中,则问题解决:

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

我的问题:

  • 我看到的情况是否符合预期,或者说rc.exe应该从开箱即可找到吗?
  • 我是否可以安全地添加这条额外路径,还是说我很可能会破坏一些东西?
  • 我是否使用了正确的额外路径?(Windows 8.1路径包括“x86”)

谢谢


2
这只是针对UWP应用程序的明智选择,即通过商店销售的类型。这些应用程序从不使用rc.exe。您没有解释为什么认为需要更改它。 - Hans Passant
谢谢Hans。我不知道这个。我正在为另一个桌面应用程序编写插件。这个变化是由该应用程序的SDK/属性表强制执行的。你会建议通常使用8.1吗?谢谢。 - Robin
你检查了所有目标的目录设置吗? - Nagappa
3个回答

1

1)rc.exe应该可以直接找到。问题可能与不同的Windows 10 SDK路径方案有关,这在较新的Windows 10 SDK中已更改。请检查VS2015文件是否指向文件夹C:\Program Files (x86)\Windows Kits\10\bin\x64(您可以查看$(WindowsSDK_ExecutablePath)的宏值)。最新的Windows 10 SDK安装在并行子文件夹中,因此您可以安装不同的Windows 10 SDK,其中包含以下文件夹:

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

如果VS期望在通用文件夹Windows Kits\10\bin\中找到SDK,则可以从bin\10.0.15063.0\(从\x86复制到\x86,从\x64复制到\x64)将rc.exe、rc.dll复制到该处。

这是VS2015 / Win 10 SDK安装中的不一致性。

2) 如果你将实际的rc.exe路径放入项目属性 > 配置属性 > 可执行目录中,通常是安全的。路径从左到右迭代,如果在之前的预定义路径中找不到 .exe,则仅搜索最后一个路径。

3) VS可能始终使用\x86文件夹中的32位rc.exe构建.rc资源文件,这取决于可执行路径中的变量。它可以设置为$(WindowsSDK_ExecutablePath)。 实际上,这并不重要,因为这些是具有等效功能的编译器可执行文件的32位/64位版本。 如果增加详细程度,可以在输出窗口中跟踪MSBuild调用哪个编译器.exe文件: 工具 > 选项 > 项目和解决方案 > 构建和运行 > MSBuild项目生成输出详细程度 > 详细


1

这可能不是最干净的解决方案,但这就是我的解决方法,正如@Alexey所说,我也有两个SDK,10和8.1,可能错误就出在这里。 我只是添加了路径:

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

在Windows环境变量中加入PATH enter image description here 注意: 如果你为不同的架构进行编译,则需要更改路径末尾的x64.
此外,路径是我的PC上rc.exe所在的位置,你应该确保它在你的PC上也在同一个位置。
修改后不要忘记关闭并重新打开Visual Studio以更新环境变量。

0
我安装了最新的Windows SDK版本10.0.19041.0,并发现rc.exe在SDK版本的bin文件夹下的architecture文件夹中。这是我的意思:
C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64

我发现已经创建了很多默认的宏,所以我使用它们使路径更加通用,以防我必须将平台目标更改为不同的版本。
这是使用宏的路径,对我有用。
$(WindowsSdkDir)bin\$(WindowsTargetPlatformVersion)\$(PlatformTarget)

所以,rc.exe 已经存在了。你只需找到它在哪里,并将其路径添加到配置对话框中的 VC++ Directories\Executable Directories 中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接