记录一个犯的有点傻的小问题,最近需要把项目中一部分不想对外开放的代码提取出来封装成动态库给第三方调用,在编译时代码部分没有问题,但是出现了编译报错:
libslamBase.so: undefined reference to gtsam::_multirobotKeyFormatter[abi:cxx11](unsigned long)'
检查了一下库文件的代码,也引用了gtsam
相关的头文件,咋还出现了未定义的引用呢,,,
后来看了一下CMakeLists.txt
,原来是我自己的库文件libslamBase.so
没有链接gtsam
哈哈哈哈哈。。。
在add_libraries(slamBase SHARED xxx.cpp)
后面再来一下链接第三方库的常规操作:
target_link_libraries(slamBase gtsam)
重新catkin_make
搞定。