VStudio2022导出Qt项目在Linux的Qtcreator中运行修复错误记录

公司项目中的代码在VStudio2022中编写,交给我需要移植Linux的Qtcreator中,记录一下移植过程中的遇到的坑,按照错误顺序由高到低记录一下,边尝试边解决边记录,写作方面没有逻辑,每个人项目环境不一样,多找多试!

错误: C1083: 无法打开包括文件: “../../../qtmqtt/src/mqtt/qmqttclient.h”: No such file or directory

VStudio2022导出Qt项目在Linux的Qtcreator中运行修复错误记录_第1张图片

错误原因:Qt的QtMqtt模块配置错误,路径和文件错误。

解决方案参考教程: 

错误:error: C1083: 无法打开包括文件: “QtMqtt/QMqttClient”: No such file or directory

VStudio2022导出Qt项目在Linux的Qtcreator中运行修复错误记录_第2张图片

 错误:: error: C1083: 无法打开包括文件: “json/reader.h”: No such file or directory

VStudio2022导出Qt项目在Linux的Qtcreator中运行修复错误记录_第3张图片

错误原因:Qtcreator的读取目录的路径不一致,设置正确的头文件路径。

解决:头文件应修改为正确路径下:#include

VStudio2022导出Qt项目在Linux的Qtcreator中运行修复错误记录_第4张图片

VStudio2022导出Qt项目在Linux的Qtcreator中运行修复错误记录_第5张图片

错误: error: 'StdAfx.h' file not found #include "StdAfx.h"

VStudio2022导出Qt项目在Linux的Qtcreator中运行修复错误记录_第6张图片 错误原因:引用头文件没有大小写,在vstudio中不报错,Qtcreator中报错,例如还有下面的Qtime应改成QTime。注意在Visual Studio中,引用头文件时通常不区分大小写,但是在C++中大小写敏感是一种语言特性,所以养好习惯哟!

错误: Could not decode "resource.h" with "UTF-8"-encoding. Editing not possible. 

 错误原因:windows和Linux的编码格式不一致,在Windows平台下,默认的汉字编码格式是GBK(gb2312), Linux系统通常使用UTF-8编码格式。

解决方案:

QT界面:Error: Could not decode “*.cpp“ with “UTF-8“ - encoding. Editing not possible-CSDN博客

错误:fatal error: 'atlstr.h' file not found #include

 错误原因:项目在Vstudio中引用了下面的msvc的头文件,但是linux中只有Gcc的编译器,没有msvc的头文件。

VStudio2022导出Qt项目在Linux的Qtcreator中运行修复错误记录_第7张图片

解决方案:

1、将引用的msvc的头文件作为Qt工程外的include中头文件全部添加项目;(错误,行不通)

解释:msvc的头文件中有许多windows的关键字,GCC无法识别,导致报错会更多VStudio2022导出Qt项目在Linux的Qtcreator中运行修复错误记录_第8张图片

VStudio2022导出Qt项目在Linux的Qtcreator中运行修复错误记录_第9张图片

2、注释MSVC引用,部分手工代替写(下下策,没有找到合适的方法了)

参考:Qt添加工程外的头文件和库的理解_qt工程文件为什么要添加-CSDN博客

错误:QtMqtt/QMqttClient: No such file or directory #include

VStudio2022导出Qt项目在Linux的Qtcreator中运行修复错误记录_第10张图片

 错误原因:linux的Qt没有安装QtMqtt模块。

解决方案:Qtmqtt编辑后的lib库文件加入到项目中,也就是将lib格式文件换成so格式文件,通过Qtcreator添加外部库就行。

VStudio2022导出Qt项目在Linux的Qtcreator中运行修复错误记录_第11张图片

VStudio2022导出Qt项目在Linux的Qtcreator中运行修复错误记录_第12张图片

错误:error: /opt/Qt5.12.9/5.12.9/gcc_64/lib/libQt5Network.so: No such file or directory

 错误原因:不清楚,项目Qt版本为Qt5.14的,现在ubuntu安装的是Qt5.15的,报错是这个版本原因有点确认!

找到了找到了!重新理了一遍,发现是添加动态库lib中模块使用了Qt5.12.9的,动态库是从其他机器上考过来的,建议最好自己编译生成!

其他修改内容:

  •  修改条件编辑

由#ifdef Win32修改为#ifdef __linux__

  • 引用文件大小写名称

vstudio中引用文件的时候大小写不敏感,在Qtcreator中对引用名称是敏感的,这个报错编译器很快就能检查出来,不过C++是大小写敏感特性,平常写代码的时候就要注意,不然给后期留麻烦!

  • 编译器的过渡

项目中在vstudio中使用了msvc中的一些库,这个部分也是在移植过程中最难解决了,MSVC是微软针对windows的开发库,ubuntu中没有这些库呀,本想着直接将头文件一起引过去,重点是这些库只能在windows用,对这些引用MSVC的库全部处理,能注释就注释,能改写就改写!后面项目推荐GCC编译器哦!

  • 代码改写

这部分根据项目移植的要求进行部分移植就可。

最后,项目环境移植成功了,花费一个礼拜左右,问题记录有些没有全部记录,重点解决问题为先了,请根据实际情况参考。

你可能感兴趣的:(bug解决,qt,开发语言)