QT MSVC中文编译出错error: C2001: 常量中有换行符 --- 解决方案

前言

这个问题一直存在,以前是妥协,现在实在是忍不了,不解决,强迫症都要犯了,于是百度了一下,看到有一篇文章是这样解决的,于是亲测,确实有效果,记录如下


正文

QT上用MSVC去编译部分含有中文的字符串时会出现编译错误 error: C2001: 常量中有换行符 ,但用MinGW就不会。需在后面加个正常的字符才能正常编译,但出现 了。其编码如下图,明显的看着编码不对。
在这里插入图片描述
如果想都编译成功,那就需要在设置里把“文件编码”的 UTF-8 BOM 改成 “ 如果编码是UTF-8则添加 ”。如下图
在这里插入图片描述
但这样做直接编译出来的都是乱码。编码如下图
在这里插入图片描述
需用 QStringLiteral()把乱码的字符串括起来,转换后的类型是 QString。但用起来很麻烦,每个都要加上去。或者可以在对于的头文件或 .cpp文件 上加上 #pragma execution_character_set(“utf-8”)

后面我的得做法是:
  1. 设置是工具->选项->文本编辑器->行为->UTF-8 BOM设置成“如果编码是UTF-8则添加”
  2. 在乱码文件上加上 #pragma execution_character_set(“utf-8”)
    在这里插入图片描述
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答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到链接选项中。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值