Debug报错:libORB_SLAM3.so: undefined symbol: _ZN5DBoW24FORB1LE

Debug报错:libORB_SLAM3.so: undefined symbol: _ZN5DBoW24FORB1LE

错误日志
编译完ORB_SLAM3后,运行时报DBoW2的Undefined symbol错误:

libORB_SLAM3.so: undefined symbol: _ZN5DBoW24FORB1LE

一般而言,这是因为没找到DBoW2的动态库,或者库版本不一致。但是,因为DBoW2是SLAM常用的包,也可能是之前编译过DBoW2的包并且sudo make install到系统路径下,导致同名包冲突。

ORBSLAM3工程文件的Thirdparty文件夹自带了一个DBoW2源码,编译ORBSLAM3会自动编译DBoW2,因此这个报错通常是系统路径下已经有了之前编译过的DBoW2造成的。

解决方法
最简单的方法,sudo find / -name libDBoW2.so,把在系统路径下的删掉就行了,但会导致其他使用该动态库的工程报错。

另一种更好的方法:
修改Thirdparty下的CMakeLists.txtadd_librarytarget_link_librariesDBoW2改为DBoW2single
修改ORB_SLAM3下的CMakeLists.txt,把target_link_libraries中的libDBoW2.so改为libDBoW2single.so
然后重新编译整个工程就行了。

你可能感兴趣的:(Debug经验,算法)