繁体   English   中英

C ++:对ERROR的未定义引用

[英]c++: Undefined reference to ERROR

我想将cpd的新c ++库( https://github.com/gadomski/cpd )添加到ROS中的一个项目。 我已经在Ubuntu OS中成功安装了cpd库。

现在我想在ROS环境下使用它。

在CMakeList.txt文件中,我已经添加了

find_package(CPD REQUIRED)

include_directories(include
  ${catkin_INCLUDE_DIRS}
  ${OpenCV_INCLUDE_DIR}
  ${PCL_INCLUDE_DIRS}
  ${CPD_INCLUDE_DIRS}
)

target_link_libraries(background_removal
  ${catkin_LIBRARIES}
  ${OpenCV_LIBRARIES}
  ${PCL_LIBRARIES}
  ${CPD_LIBRARIES}
)

然后在我刚刚添加的源代码中

#include <cpd/nonrigid_lowrank.hpp>

以及示例代码

cpd::NonrigidLowrank reg;
cpd::Registration::ResultPtr result = reg.run(X, Y);

但是在编译之后,它会引发错误:对`cpd :: NonrigidLowrank :: NonrigidLowrank()的未定义引用

错误:未定义引用`cpd :: Registration :: run(arma :: Mat const&,arma :: Mat const&)const'

我想cpd库没有链接到ROS,调用cpd库是否做错了?

undefined reference是链接器错误,而不是编译器错误。 您可以使用include_directories() ,但是您忘记将${CPD_LIBRARIES} (1)(2)也添加到目标的target_link_libraries()中。


(1):只是猜测FindCPD.cmake与所有其他FindXyz.cmake模块的工作方式相同。 我自己从未与CPD合作过。

(2):从${OpenCV_LIBRARIES}猜测,您还需要添加${OpenCV_LIBRARIES}${PCL_LIBRARIES} ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM