[英]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.