Sophus 库使用过程中遇到的报错

本文详细介绍了在使用Sophus库时遇到的报错,如头文件路径问题和链接错误,提供了解决方案,包括更新头文件引用和CMake配置调整。适合刚接触Sophus或进行库升级的开发者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写在前面

本博客记录使用 Sophus 过程中遇到的报错。

1. 找不到头文件 fatal error: sophus/so3.hpp: 没有那个文件或目录

1.1 问题描述

fatal error: sophus/so3.hpp: 没有那个文件或目录

原因:
github 现在是新版的sophus,是基于模板类的,它对应的头文件是 .h,而基于非模板类的sophus 对应的头文件是 .hpp,所以会出现报错。

1.2 解决方法

把代码中的

// 第一处
#include "sophus/so3.hpp"
#include "sophus/se3.hpp"
// 第二处
sophus::sophusd SO3;
sophus::sophusd SE3;
// 第三处
Sophus::SO3d
Sophus::SE3d

全部改为

// 第一处
#include "sophus/so3.h"
#include "sophus/se3.h"
// 第二处
sophus::sophus SO3;
sophus::sophus SE3;
// 第三处
Sophus::SO3
Sophus::SE3

2. /usr/bin/ld: 找不到 -lSophus::Sophus

2.1 报错提示

编译报错

/usr/bin/ld: 找不到 -lSophus::Sophus
/usr/bin/ld: 找不到 -lSophus::Sophus
collect2: error: ld returned 1 exit status

2.2 解决方法

这里不知道为什么会出现这样的问题,这里只说自己遇到这个问题的解决方法
自己原来的CMake:

list(APPEND ALL_TARGET_LIBRARIES ${Sophus_LIBRARIES} Sophus::Sophus)
target_link_libraries( useSophus ${Sophus_LIBRARIES} Sophus::Sophus)

改为

list(APPEND ALL_TARGET_LIBRARIES ${Sophus_LIBRARIES})
target_link_libraries( useSophus ${Sophus_LIBRARIES})

参考链接:
[1] 戴奥良. slam14讲,李代数库Sophus遇到的问题及解决办法 [EB/OL]. https://blog.csdn.net/weixin_44986556/article/details/109154373, 2020-10-19/2022-03-24.
[2] rungo_liang. slam14讲,李代数库Sophus遇到的问题及解决办法 [EB/OL]. https://blog.csdn.net/weixin_44986556/article/details/109154373, 2020-10-19/2024-07-07.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值