…/lib/libORB_SLAM2.so:对‘Sophus::SE3::SE3()’未定义的引用 解决方案
在自己更改orbslam2代码的时候,使用了Sophus库中SE3(),但报错,报错内容如下
../lib/libORB_SLAM2.so:对‘Sophus::SE3::operator=(Sophus::SE3 const&)’未定义的引用
../lib/libORB_SLAM2.so:对‘Sophus::SE3::SE3()’未定义的引用
../lib/libORB_SLAM2.so:对‘Sophus::SE3::SE3(Eigen::Matrix<double, 3, 3, 0, 3, 3> const&, Eigen::Matrix<double, 3, 1, 0, 3, 1> const&)’未定义的引用
../lib/libORB_SLAM2.so:对‘Sophus::SE3::SE3(Sophus::SE3 const&)’未定义的引用
查看CMakeLists文件
在 find_package(Sophus REQUIRED) 可以找到Sophus,但还是不成功。
查找了很多资料后发现原因,如下:
libSophus.so没有被链接上
解决方案
在我安装Sophus的时候,使用了install make,所以在/usr中可以找到这个.so文件。
我的libSophus.so的地址为:c /usr/local/lib/libSophus.so
所以我在CmakeLists文件中,添加
set(Sophus_LIBRARIES "/usr/local/lib/libSophus.so")
message(STATUS "Sophus libraries: ${Sophus_LIBRARIES}")
target_link_libraries(${PROJECT_NAME}
${Sophus_LIBRARIES})
即可