在使用 Qt 开发 Windows 应用程序时,编译过程中偶尔会遇到以下错误:
:-1: error: LNK1158: 无法运行“rc.exe”
这个错误并不直接指向代码问题,而是与开发环境配置有关。本文将详细分析该错误出现的原因,并提供几种可行的解决方案。
错误原因
rc.exe是 Windows 资源编译器(Resource Compiler),用于将程序中的图标、版本信息、对话框等资源文件编译为可链接的目标文件。当链接器无法找到或无法执行rc.exe时,就会报出LNK1158。
解决方案
复制 rc.exe 到 Qt 编译器目录
这是最直接、成功率最高的解决方法。
🎯 第一步:确定你的 Qt 编译器版本
打开你正在使用的 Qt 项目文件(.pro)或查看 Qt Creator 里的Kit 设置,找到类似下面这样的信息:
如果是 msvc2017:说明编译器是 Visual Studio 2017
如果是 msvc2019:说明编译器是 Visual Studio 2019
如果是 msvc2022:说明编译器是 Visual Studio 2022
🔎 第二步:找到对应版本的rc.exe
确定编译器版本后,就可以用它来找rc.exe了。rc.exe存放在你电脑上 Windows Kits (Windows SDK) 的安装目录里,路径结构是固定的。
方法一:沿着路径找(最稳妥)
你需要找到和上一步msvc 版本号最匹配的 SDK 版本。通常在10.0.xxxxx.0这样的文件夹里。
用文件资源管理器打开下面的路径,然后根据你编译的是 32 位还是 64 位程序,进入对应的文件夹:
C:\Program Files (x86)\Windows Kits\10\bin\
在这个目录下,你会看到几个版本号文件夹(比如10.0.19041.0,10.0.20348.0等)-1-4。
怎么选?
一般选择数字最大的那个文件夹就行,它通常就是和你 VS 版本配套安装的最新高版本 SDK。
方法二:在 Qt 安装目录下找(简单直接)
根据网上的经验,对于msvc2017环境,Qt 可能会在它的bin目录下寻找rc.exe-1。你可以直接把你找到的rc.exe复制到下面的路径里(记得根据你的实际安装路径调整):
E:\Qt\你的Qt版本号\msvc2017\bin
E:\Qt\你的Qt版本号\msvc2017_64\bin
(如果你的不是 msvc2017,把文件夹名字里的msvc2017换成你的版本,比如msvc2019即可)