能够使用 cmake 求解对符号的未定义引用

uable to solve undefined reference to symbol with cmake

本文关键字:符号 未定义 引用 cmake 能够使      更新时间:2023-10-16

我在尝试制作下载的程序时出现以下错误。

CMakeFiles/ptcloud_vslam_node.dir/src/nodes/ptcloud_vslam_node.cpp.o:对符号"pcl::console::p rint(pcl::console::VERBOSITY_LEVEL, char const*, ...)' 的未定义引用

/usr/bin/ld: 注意:"pcl::console:

:p rint(pcl::console::VERBOSITY_LEVEL, char const*, ...)' 在 DSO/opt/ros/groovy/lib/libpcl_common.so.1.6 中定义,因此请尝试将其添加到链接器 命令行

/

opt/ros/groovy/lib/libpcl_common.so.1.6:无法读取符号:无效操作

我尝试在我的 cmake 文件中添加以下内容

    LINK_DIRECTORIES(/opt/ros/groovy/lib/libpcl_common.so.1.6)
    TARGET_LINK_LIBRARIES(ptcloud_vslam_node libpcl_common.so.1.6)

但是我在运行cmake时出现以下错误

CMake Error at CMakeLists.txt:51 (TARGET_LINK_LIBRARIES): 无法为目标"ptcloud_vslam_node"指定链接库,因为 由该项目构建。

我应该对我的 cmake 文件进行哪些修改才能修复链接错误?

非常感谢

它说"链接目录",但您正在向其传递一个实际的库,错误是不满意的,因为出于某种原因它想要构建ptcloud_vslam_node,它似乎没有意识到您正在尝试指定它。

请发布更多信息并对此答案添加评论,我会回来查看。

使用库中定义的模板时找不到符号

这将解释链接的工作原理,然后您可能会更好地理解错误。