c++: 未定义的错误引用
c++: Undefined reference to ERROR
我想在 ROS 中的一个项目中添加新的 cpd c++ 库 (https://github.com/gadomski/cpd)。
我已经在 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::运行(arma::Mat const&, arma::Mat const&) const'的引用
我想 cpd 库没有链接到 ROS,我调用 cpd 库是不是做错了什么?
undefined reference
是链接器错误,不是编译器错误。您使用 include_directories()
没问题,但您忘记将 ${CPD_LIBRARIES}
(1)(2) 添加到目标的 target_link_libraries()
中。
(1):只是猜测 FindCPD.cmake "works" 与所有其他 FindXyz.cmake 模块的方式相同。我自己从未使用过 CPD。
(2):根据您的代码片段猜测,您还需要添加 ${OpenCV_LIBRARIES}
和 ${PCL_LIBRARIES}
...
我想在 ROS 中的一个项目中添加新的 cpd c++ 库 (https://github.com/gadomski/cpd)。 我已经在 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::运行(arma::Mat const&, arma::Mat const&) const'的引用
我想 cpd 库没有链接到 ROS,我调用 cpd 库是不是做错了什么?
undefined reference
是链接器错误,不是编译器错误。您使用 include_directories()
没问题,但您忘记将 ${CPD_LIBRARIES}
(1)(2) 添加到目标的 target_link_libraries()
中。
(1):只是猜测 FindCPD.cmake "works" 与所有其他 FindXyz.cmake 模块的方式相同。我自己从未使用过 CPD。
(2):根据您的代码片段猜测,您还需要添加 ${OpenCV_LIBRARIES}
和 ${PCL_LIBRARIES}
...