orbslam3 编译时 Thirdparty sophus 库多种错误 redefinition, not declared in this scope

问题

在装了 ROS 的机器人系统里编译 orbslam3 时, 发现 Thirdparty sophus 库密集报错, 导致 orbslam3 无法完成编译
在这里插入图片描述
在这里插入图片描述

排查

  1. 同样的代码在装了 ROS 的笔记本 ubuntu18.04 系统里可以成功通过编译, 但是在装了同版本 ROS 的机器人 ubuntu18.04 系统里无法编译

  2. Sophus 库本身可以正常编译

  3. 在网上搜索了很久, 没有发现类似的报错情况

  4. 报错大概有两类, 第一类主要是 not declaredinvalid, 看不出什么问题

  5. 第二类报错主要是 redefinition, 此类问题有看到类似博客

  6. 根据该博客文章, 推测机器人系统中编译 orbslam3 时从多处引用了 sophus 库, 导致了 redefinition 报错

  7. 重新分析报错信息, 发现 orbslam3 编译时指定引用的是项目路径下的 Thirdparty/Sophus/sophus 库, 但系统中还有 ROS 包里之前安装的 /opt/ros/melodic/include/sophus 库, 导致了 redefinition 报错
    在这里插入图片描述

解决

  1. 搜索 orbslam3 项目代码中所有引用 Thirdparty/Sophus/sophus 库的地方, 如下
#include "Thirdparty/Sophus/sophus/geometry.hpp"
  1. 修改为直接从ROS 包里之前安装的 sophus 库引用, 如下
# #include "Thirdparty/Sophus/sophus/geometry.hpp"
#include "sophus/geometry.hpp"
  1. 修改了所有 sophus 库的引用后, 重新编译即可解决问题

参考资料

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值