You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 23:36:03