【发布时间】:2018-03-16 12:12:21
【问题描述】:
我在网上进行了很多搜索,但找不到合适的解决方案,只有解决方法。我想知道 VS2015 或 WindowsSDK 安装是否损坏。
事情是这样的: 我得到问题构建(在链接阶段)并且 VS 环境报告找不到资源编译可执行文件(rc.exe)
TRACKER : error TRK0005: Failed to locate: "rc.exe". The system cannot find the file specified.
我在我的机器上四处搜索,发现二进制文件位于:
C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\x64
所以快速的解决方法是将该路径添加到 PATH 并且一切正常。但我对此并不满意,因为我确信 Windows SDK 安装程序(或 VS)应该能很好地处理这个问题。
如果我查看 VS IDE -> 项目 -> 属性 -> 配置属性 -> VC++ 目录并查看“可执行目录”,我希望在那里找到正确的路径。所以我通过打开 MACRO(右下角)并过滤 WindowsSDK_ExecutablePath 来检查它:我看到了
$(WindowsSDK_ExecutablePath) = C:\Program Files (x86)\Windows Kits\10\bin\x86
$(WindowsSDK_ExecutablePath_arm) = C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\arm
$(WindowsSDK_ExecutablePath_arm64) = C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\arm64
$(WindowsSDK_ExecutablePath_x86) = C:\Program Files (x86)\Windows Kits\10\bin\x86
$(WindowsSDK_ExecutablePath_x64) = C:\Program Files (x86)\Windows Kits\10\bin\x64
如您所见,英特尔架构文件夹指向一个通用位置(不是特定于 SDK 版本的位置),当然没有这些二进制文件。有趣的是,ARM 文件夹是正确的。
我正在尝试了解是什么损坏了这些文件夹...
我猜它是 SDK 安装程序,就像位于
中的 UAP.props 文件中一样$(WindowsSDKDir)/DesignTime/CommonConfiguration/Neutral/UAP/10.0.16299.0/
我可以看到这个
<WindowsSDK_ExecutablePath_x86>$(WindowsSdkDir)bin\x86;</WindowsSDK_ExecutablePath_x86>
<WindowsSDK_ExecutablePath_x64>$(WindowsSdkDir)bin\x64;</WindowsSDK_ExecutablePath_x64>
虽然我不是 100% 确定,因为这是安装后,所以它可能是 VS 改变它。
有什么想法吗?建议?有谁遇到过同样的问题并设法找到适当的解决方法而不是变通方法?
【问题讨论】:
-
顺便说一句,这在 VS 2017 中按预期工作,可执行文件指向正确的位置。我猜通过查看它在 UAP.props 中的设置方式,WindowsSDKDir 本身可能是错误的或未更新
-
使用 .rc 文件的项目应将其目标平台版本设置为 8.1。仅 UWP 应用需要针对众多 10.0.x 版本之一。哪个不使用 .rc
-
@HansPassant 感谢您的评论。那会解释很多。我在哪里可以找到有关此的深入文档?我四处搜索,但我发现微软论坛真的很混乱
-
@HansPassant 当你以 8.1 为目标时,你会得到一个相当旧的
libucrt.lib版本。我们发现,获得当前libucrt.lib的唯一干净方法是切换到更新的 Windows 10 SDK。然后导致此错误。
标签: winapi visual-c++ visual-studio-2015