当前位置: 首页 > news >正文

QGC 环境搭建踩坑记录

文章目录

  • 🧩 问题一:链接时报 relocation 错误
    • ❗ 错误信息
    • ✅解决办法: 使用 21.3 的 ndk
  • 🧩 问题二:Qt 项目 Kit 无法解析
    • ❗ 错误信息
    • ✅ 解决办法
  • 🧩问题三:程序运行时报 “无法定位程序输入点”
    • ❗ 错误截图
    • 🕵️‍♂️ 问题分析
    • ✅ 解决方法
  • 💡 其他经验分享
    • 📥 Gradle 下载过慢

在Qt 5.12.6. 与 Qt 5.15.2 环境下开发 QGC 应用时,遇到了不少的,这里做一下记录,供有相同需求的同学参考。

🧩 问题一:链接时报 relocation 错误

环境:qt 5.15.2   Android  下

❗ 错误信息

ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol 'ff_cos_32'; recompile with -fPIC
>>> defined in .../gstreamer-1.0-android-universal-1.18.5/arm64/lib/libavcodec.a(fft_float.o)
>>> referenced by asm.S:491 (.../libavutil/aarch64/asm.S:491)
>>>               fft_neon.o:(fft32_neon) in archive```shell
ld: error: relocation R_AARCH64_ADD_ABS_LO12_NC cannot be used against symbol 'ff_cos_32'; recompile with -fPIC

✅解决办法: 使用 21.3 的 ndk

将 NDK 版本更换为 21.3,重新编译即可。

📝 使用较新版本的 NDK(如 r23 或更高)可能不兼容一些预编译的 .a 库(如 GStreamer、FFmpeg),建议回退到 21.3 版本进行兼容性调试。

示意图:
在这里插入图片描述

🧩 问题二:Qt 项目 Kit 无法解析

 环境:qt 5.15.2 或者 qt 5.12.6 

❗ 错误信息

Cannot parse project "qgroundcontrol": No kit selected.
Cannot parse project "qgroundcontrol": The currently selected kit "Desktop Qt 5.12.6 MSVC2017 64bit" does not have a valid Qt.

在这里插入图片描述

✅ 解决办法

删除 Qt Creator 的配置缓存

C:\Users\用户名\AppData\Roaming\QtProject

在这里插入图片描述

这个缓存文件有时会导致 Kit 配置无法识别或 Qt Creator 启动缓慢。

还有可能是拷贝过来的程序,可直接 git clone 解决,不要使用拷贝的程序 —— 这都是踩过的坑

🧩问题三:程序运行时报 “无法定位程序输入点”

环境: QT 5.12.6 

❗ 错误截图

在这里插入图片描述
在这里插入图片描述

🕵️‍♂️ 问题分析

编译生成的 .exe 缺少 Qt 动态库(如 Qt5Locationd.dll),并且复制的 DLL 是 Qt 5.15.2 的,而当前项目用的是 Qt 5.12.6,导致符号无法匹配。

在这里插入图片描述

从 .pri 文件中可以看到使用了如下指令:

QMAKE_POST_LINK += $$escape_expand(\\n) $$QT_BIN_DIR\\windeployqt --qmldir=$${SOURCE_DIR}\\src $${DEPLOY_TARGET}

实际执行命令也没错:

C:/Qt/Qt5.12.6/5.12.6/msvc2017_64/bin\windeployqt --qmldir=E:/21_GCS/src staging\scGcs.exe

但仍然出现错误。

✅ 解决方法

在 windeployqt 命令中添加 --no-patchqt 参数,避免其尝试修改 Qt DLL 内部路径,保持原始状态即可。

QMAKE_POST_LINK += $$escape_expand(\\n) $$QT_BIN_DIR\\windeployqt --no-patchqt --qmldir=$${SOURCE_DIR}\\src $${DEPLOY_TARGET}
💡 含义:跳过 patch DLL 操作,windeployqt 只负责复制文件,不修改路径信息。

在这里插入图片描述

💡 其他经验分享

📥 Gradle 下载过慢

下载 gradle 文件替换,节省等待时间:

在这里插入图片描述

http://www.dtcms.com/a/279204.html

相关文章:

  • XML vs JSON:核心区别与最佳选择
  • IDEA实现纯java项目并打包jar(不使用Maven,Spring)
  • C++--priority_queue的模拟实现
  • 幻想读 通过多版本并发控制(MVCC)和间隙锁(Gap Lock)的组合也能防止幻读具体说下
  • Transformer江湖录 第五章:江湖争锋 - BERT vs GPT
  • 如何保护文件传输安全?文件传输加密
  • 企业数字化资产管理安全、成本、协作困局难解?
  • Java行为型模式(命令模式)应用场景分析
  • 数字化红头文件生成工具:提升群聊与团队管理效率的创新方案
  • Ubuntu安装 Redis
  • vscode/cursor怎么自定义文字、行高、颜色
  • Mysql数据库学习--多表查询
  • Eureka
  • Linux:3_基础开发⼯具
  • JAVA面试宝典 - 《MyBatis 进阶:插件开发与二级缓存》
  • 理解:进程、线程、协程
  • muduo面试准备
  • 文本预处理(四)
  • 2025-7-14-C++ 学习 排序(2)
  • 【LeetCode 热题 100】94. 二叉树的中序遍历——DFS
  • 死锁!哲学家进餐问题(操作系统os)
  • 光电融合新范式:长春光机所孙晓娟/李大冰团队《Light》发表铁电量子阱相纯度调控策略
  • 系统分析师第五课:进程通信-死锁-存储管理-固定分页分段
  • SpringMVC注解:@RequestParam 与 @PathVariable
  • 详解同步、异步、阻塞、非阻塞
  • 关于机械臂控制中的 MoveL 和 MoveJ 操作
  • Spring Boot + Thymeleaf + RESTful API 前后端整合完整示例
  • FBRT-YOLO: Faster and Better for Real-Time Aerial Image Detection论文精读(逐段解析)
  • linux服务器换ip后客户端无法从服务器下载数据到本地问题处理
  • 学生管理系统(C++实现)