ROS C++调用rviz_visual_tools实现Rviz平面可视化时CMake链接报错求助
错误原因
这个undefined reference报错属于典型的C++链接阶段错误,说明编译器找到了rviz_visual_tools的头文件声明,但找不到对应功能的二进制实现库,和你修改坐标系参数的操作没有关系。常见诱因是项目的构建配置没有正确关联rviz_visual_tools的依赖库。
解决步骤
你需要依次检查package.xml和CMakeLists.txt的配置:
1. 检查package.xml配置
确保添加了rviz_visual_tools的依赖声明,加入以下两行:
<build_depend>rviz_visual_tools</build_depend> <exec_depend>rviz_visual_tools</exec_depend>
如果是ROS Noetic及更新版本,也可以统一用depend标签:
<depend>rviz_visual_tools</depend>
2. 检查CMakeLists.txt配置
按顺序确认以下配置项正确:
- 首先在
find_package中添加rviz_visual_tools依赖,示例如下:
find_package(catkin REQUIRED COMPONENTS roscpp # 其他你项目用到的ROS包 rviz_visual_tools )
- 确保
catkin_package中正确导出依赖:
catkin_package( CATKIN_DEPENDS roscpp rviz_visual_tools # 其他你的项目自定义配置项 )
- 确保你的目标可执行文件正确链接了rviz_visual_tools的库,你报错里的目标是
listener,对应配置如下:
target_link_libraries(listener ${catkin_LIBRARIES} )
${catkin_LIBRARIES}已经包含了rviz_visual_tools的库路径,不需要额外单独添加。
3. 重新编译
配置修改完成后,删除工作空间的build和devel文件夹,重新执行catkin_make(或catkin build,根据你使用的编译工具选择对应命令)即可。
内容的提问来源于stack exchange,提问作者Sant
相关产品推荐
相关产品推荐

