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

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

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

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

解决方案参考教程: 

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

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

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

解决:头文件应修改为正确路径下:#include <include/json/reader.h>

错误: error: 'StdAfx.h' file not found <U+FEFF>#include "StdAfx.h"

 错误原因:引用头文件没有大小写,在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 <atlstr.h>

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

解决方案:

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

解释:msvc的头文件中有许多windows的关键字,GCC无法识别,导致报错会更多

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

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

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

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

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

错误: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编译器哦!

  • 代码改写

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

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

相关推荐

  1. Linux修复 Linux 错误 - 地址已使用

    2023-12-28 18:14:07       51 阅读
  2. QT】发生运行错误汇总

    2023-12-28 18:14:07       70 阅读
  3. linux查询运行日志方法

    2023-12-28 18:14:07       43 阅读
  4. 如何查看Linux某个项目是否Docker运行

    2023-12-28 18:14:07       22 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-28 18:14:07       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-28 18:14:07       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-28 18:14:07       87 阅读
  4. Python语言-面向对象

    2023-12-28 18:14:07       96 阅读

热门阅读

  1. Linux的基本命令

    2023-12-28 18:14:07       54 阅读
  2. WebView下载适配blob协议

    2023-12-28 18:14:07       57 阅读
  3. vue exceljs json数据转excel

    2023-12-28 18:14:07       54 阅读
  4. React面试题

    2023-12-28 18:14:07       52 阅读
  5. GetLastError()详细介绍

    2023-12-28 18:14:07       56 阅读
  6. Linux世界的奇妙之旅:开源之道的探索与分享

    2023-12-28 18:14:07       59 阅读
  7. linux查看网卡是100M还是1000M

    2023-12-28 18:14:07       60 阅读
  8. Kafka

    Kafka

    2023-12-28 18:14:07      53 阅读
  9. Android系统启动-init进程详解(Android 14)

    2023-12-28 18:14:07       48 阅读
  10. Qt底层机制之对象树总结

    2023-12-28 18:14:07       55 阅读
  11. 2023年湘潭大学软件工程考试总结

    2023-12-28 18:14:07       57 阅读