相关报错及解决方法:
1. 报错: Target "useSophus" links to target "Sophus::Sophus" but the target was not found.
解决方法: CMakelists.txt文件中将 ''target_link_libraries(useSophus Sophus::Sophus)'' 语句改为"target_link_libraries(useSophus ${Sophus_LIBRARIES})";
2. 找不到se3.hpp文件
解决方法: 将#include "sophus/se3.hpp"改为 #include "sophus/so3.h" 和 #include "sophus/se3.h" ,
同时在下载好Sophus后, 书中说Sophus库只需要编译即可, 但是后面会提示找不到se3.hpp文件, 所以, 在编译完Sophus后,还需要执行 "sudo make install",
mkdir build
cd build
cmake ..
make
sudo make install
输出结果清楚表明了执行sudo make install后,头文件的安装路径" /usr/local/include/sophus",
之后在运行诸如slambook2/ch4中代码时就不会出现找不到头文件的错误了
3. 第三个会报错的就是 cmakelists中没有使用C++11标准, 在cmakelists.cpp开始部分加上
add_compile_options(-std=c++11)
4. 报错: CMakeFiles/trajectoryError.dir/trajectoryError.cpp.o: In function `main':
trajectoryError.cpp:(.text+0x130): undefined reference to `Sophus::SE3::SE3(Sophus::SE3 const&)'
解决方法: trajectoryError.cpp文件中使用了Sophus库, 但是在cmakelists.cpp文件中没有关联Sophus库, 所以, 需要自己在example/CMakelists.cpp文件中添加:
好啦,我遇到的就是这些问题, 解决之后程序能够正常编译执行.