undefined reference to `Nabo::NearestNeighbourSearch<float, Eigen::Matrix<float, -1, -1, 0, -1, -1>

今天在使用nabo库的时候碰到一个问题,如下:

/home/jinye/projects/Segment/SegmatchProject/Default/libsegmatch.so👎 error: undefined reference to `Nabo::NearestNeighbourSearch<float, Eigen::Matrix<float, -1, -1, 0, -1, -1> >::knn(Eigen::Matrix<float, -1, 1, 0, -1, 1> const&, Eigen::Matrix<int, -1, 1, 0, -1, 1>&, Eigen::Matrix<float, -1, 1, 0, -1, 1>&, int, float, unsigned int, float) const’

看来是链接的时候找不到nabo相关函数的实现

1. 问题分析:

1.1. 查找nabo的配置文件

在CMakeList.txt中通过find_package查找nabo的配置文件

find_package(libnabo)
message(STATUS "libnabo_DIR = ${libnabo_DIR}")
message(STATUS "libnabo_INCLUDE_DIRS = ${libnabo_INCLUDE_DIRS}")
message(STATUS "libnabo_LIBRARIES = ${libnabo_LIBRARIES}")

输出信息为:

-- libnabo_DIR = /usr/local/share/libnabo/cmake
-- libnabo_INCLUDE_DIRS = 
-- libnabo_LIBRARIES = 

可以看到,其实是找到了nabo的配置文件路径了,可能是配置文件的信息有误,导致找不到头文件和库文件的位置

1.2. 查看配置文件

打开linnaboConfig.cmake

# - Config file for the libnabo package

include(${CMAKE_CURRENT_LIST_DIR}/libnabo-targets.cmake)

# This causes catkin_simple to link against these libraries
set(libnabo_FOUND_CATKIN_PROJECT true)

发现它引用了libnabo-targets.cmake这个配置文件,继续查找,
搜索libnabo_INCLUDE_DIRSlibnabo_INCLUDE_DIRS,可以看到这两个变量并没有被设置,所以cmake才找不到nabo的头文件和库文件

2. 解决方案

这里我选择自己设置头文件和库文件的位置

set(libnabo_INCLUDE_DIRS "/usr/local/include/nabo")
set(libnabo_LIBRARIES "/usr/local/lib/libnabo.so")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值