qt vs2017 编译时出现 无法打开 shell32.lib(cannot open file “shell32.lib) 解决方案

前段时间,师弟在调试qt程序的时候,出现了这样一种情况

  • 编写好的qt程序在qtcreator中,使用mingw编译没有任何问题。
  • 当把编译器切换为msvc(即vs2017的编译器)时,总是会出现cannot open file “shell32.lib
  • 不断的确认库的配置是否正确,以及该文件是否存在,结果都是库的路径正确,文件存在,但就是使用msvc无法编译通过

经过一段时间的思考,既然在qtcreator中使用msvc编译器不行

那么直接在vs2017里面编译qt程序是否是可行的

要在vs中运行qt程序,必须要安装qt的插件
可以百度搜索 qt vs tools
https://download.qt.io/development_releases/vsaddin/

下载好对应版本的插件后,确保vs处于关闭状态,双击vsix就可以很简单的安装好了

安装好后还需要进行配置
在这里插入图片描述
点击qt options,依次
Qt Option->Qt Version->add->安装Qt的路径
Qt的安装路径下会有一个msvc的文件夹,就选择该文件夹
插件就会自动识别对应版本
在这里插入图片描述
点击ok完成

开始

点击Qt VS Tools,再点击open Qt project file
打开你的qt程序
开始编译,然后出现了很多错误,但大部分都是报头文件丢失的问题
在编译错误的最下方,说无法找到windows SDK (10.0.190–)

太好笑了,vs2017安装到最新了也只到10.0.17呀

那就更改一下vs的SDK版本 ,到当前的sdk版本

重新点击运行,完美运行,调试正常

结论

可能是由于qt程序默认的sdk版本号过高
当前的vs没有提供合适的sdk,使得编译出错
至于是否真的是这样,就还需要更多的尝试了

特此进行记录,
如果如果有遇到类似问题的,
可以尝试使用相同的方法进行解决
也希望对该问题有了解的前辈可以讲解一下其中的具体原因

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: qt5编译过程中出现错误:lnk1104: 无法打开文件“shell32.lib”。这个错误通常是由于Qt项目中缺少了shell32.lib这个库文件引起的。 解决这个问题需要进行如下操作: 1. 确保你的系统中存在shell32.lib库文件。这个库文件通常是包含在Windows SDK中的,如果你没有安装Windows SDK,可以从Microsoft的官方网站下载并安装。 2. 打开Qt的项目配置文件(.pro文件),确保已经正确地设置了Windows SDK的路径和版本。可以在.pro文件中添加类似下面的行来设置: ``` win32:CONFIG += sdk_version 10.0 INCLUDEPATH += 'C:/Program Files (x86)/Windows Kits/10/Include/10.0.17763.0/um' LIBS += -L'C:/Program Files (x86)/Windows Kits/10/Lib/10.0.17763.0/um' ``` 具体的路径和版本号根据你系统中的Windows SDK安装路径和版本进行相应的修改。 3. 如果你已经正确设置了Windows SDK路径和版本,但还是出现了这个错误,可以尝试重新生成Qt的Makefile。 - 首先,删除之前生成的Makefile文件和build目录。 - 然后,重新运行qmake命令来生成新的Makefile文件。 - 最后,再次尝试编译你的Qt项目。 通过上述操作,你应该能够解决qt5编译错误lnk1104:无法打开文件“shell32.lib”的问题。如果问题仍然存在,可以尝试搜索更多与你的具体环境相符合的解决方法。 ### 回答2: lnk1104错误是MSVC编译器在编译过程中出现的链接错误,提示找不到名为"shell32.lib"的文件。在Qt5中,默认情况下,使用MSVC编译器进行构建并链接系统库文件。这个错误通常是由于缺少相关系统库文件或者编译器配置问题导致的。 解决这个问题的方式有以下几种: 1.确保安装了Windows SDK:shell32.lib是Windows SDK中的一个系统库文件,缺少这个文件会导致链接错误。确保已安装和配置了适当版本的Windows SDK,以便编译器能够找到所需的库文件。 2.检查编译器配置:在Qt Creator中,确保已正确设置了编译器和构建套件。在项目的“Kits”选项卡中,选择正确的编译器和构建套件,并确保配置正确。 3.检查Qt项目文件:在Qt项目的.pro文件中,可能存在错误的配置,比如错误的库依赖项。在.pro文件中,检查是否存在 "LIBS += -lshell32" 这样的行,如果没有,则添加该行以确保链接正确。 4.检查环境变量和库路径:确保系统的环境变量中包含正确的库路径,比如LIB环境变量是否正确配置了Windows SDK的路径。可以通过在命令提示符下运行 "echo %LIB%" 来检查当前的LIB环境变量配置。 总之,解决lnk1104错误需要确保正确安装了Windows SDK,并通过正确的配置编译器和项目文件来链接所需的库文件。如果问题仍然存在,可能是由于其他配置或安装问题导致的,可以尝试重新安装相关软件包或使用其他编译器进行构建。 ### 回答3: qt5是一款流行的跨平台开发框架,但在使用过程中经常会遇到一些错误。比如在编译过程中,有候会出现“lnk1104: 无法打开文件‘shell32.lib’”的错误。 这个错误通常是因为在编译缺少了shell32.lib这个库文件。shell32.lib是Windows操作系统中的一个重要的库文件,提供了很多与文件和文件夹操作相关的函数和接口。 要解决这个问题,我们可以通过以下几种方法: 1. 确保安装了Windows平台SDK(Software Development Kit),因为shell32.lib是Windows SDK的一部分。可以从Microsoft官方网站下载并安装最新版本的Windows SDK。 2. 检查编译环境的配置是否正确。在Qt Creator中,可以点击项目菜单下的“构建设置”,然后检查“构建环境”选项卡中的设置是否正确。确保正确选择了Windows平台的编译器和工具链。 3. 检查系统路径是否正确。在Windows操作系统中,shell32.lib通常位于“C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\Lib”目录下。可以检查这个路径是否存在,并且确保编译环境的路径设置中包含了这个路径。 4. 如果以上方法都没有解决问题,可以尝试手动添加shell32.lib到项目的链接选项中。在Qt Creator中,可以在.pro文件中添加类似于“LIBS += -lshell32”的语句,将shell32.lib添加到链接选项中。 总结来说,解决Qt5编译的“lnk1104: 无法打开文件‘shell32.lib’”错误,需要确保系统中安装了Windows平台SDK,配置正确的编译环境,检查系统路径设置,并手动添加shell32.lib到链接选项中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值