写在前面
本博客记录使用 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.