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

时间:2017-04-06 15:27:27

标签: c++ visual-studio-2015 windows-10-desktop

我有一个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?
  • 我可以安全地添加这条额外的路径,还是我可能会破坏某些东西?
  • 我使用正确的额外路径吗? (8.1路径包括" x86"。)

由于

3 个答案:

答案 0 :(得分: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到\\)中复制rc.exe,rc.dll。 x64)。

这与VS2015 / Win 10 SDK安装不一致。

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

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

答案 1 :(得分:1)

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

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

到Windows环境变量中的PATH enter image description here

注意:如果要针对其他体系结构进行编译,则需要更改路径末尾的x64。

此外,路径是rc.exe在我的PC上的位置,您应该确保它也确实在PC上的同一位置。

不要忘记在更改后关闭并重新打开Visual Studio以更新环境变量。

答案 2 :(得分:0)

我安装了最新的 Windows SDK 版本之一,10.0.19041.0,发现 rc.exe 在 bin 文件夹中 SDK 版本下的架构文件夹。这是我的意思:

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

我发现已经创建了许多默认宏,因此我使用它们使路径更通用,以防万一我必须将平台目标更改为不同的版本。

这是使用宏的路径,它对我有用。

$(WindowsSdkDir)bin$(WindowsTargetPlatformVersion)$(PlatformTarget)

所以,rc.exe 就在那里。您只需要找到它的位置并将其路径添加到配置对话框中的 VC++ 目录\可执行目录