ROS2 rviz2可停靠面板插件编译成功但加载时报库找不到错误如何解决
问题原因及解决方案
你遇到的库加载失败问题可以按以下步骤逐一排查修复:
1. 修复插件描述文件路径错误
这是直接触发报错的核心问题:你当前demo_plugin.xml中的library标签路径配置错误,开头多余的斜杠会导致pluginlib无法正确识别库路径。
修改demo_plugin.xml内容:
<!-- 修改前 --> <library path="/libprc_demo_panel" > <!-- 修改后 --> <library path="prc_demo_panel" >
pluginlib的path属性仅需要填写编译生成的库名(去掉lib前缀和.so后缀即可),不需要加绝对路径前缀。
2. 补充package.xml缺失依赖
你当前的package.xml没有声明rviz、pluginlib相关的必要依赖,会导致运行时找不到依赖库,需要补充以下内容:
<depend>rclcpp</depend> <depend>rviz_common</depend> <depend>pluginlib</depend> <depend>class_loader</depend>
3. 修复代码中未实现的符号问题
即使库路径正确,以下未实现的函数也会导致库加载失败:
- 在
demo_widget.cpp中实现DemoWidget的析构函数:DemoWidget::~DemoWidget() = default; - 实现你在槽函数中声明的
buttonOne、buttonTwo函数,至少补充空实现避免符号缺失。
4. 可选但建议的配置修正
去掉CMakeLists.txt中add_definitions(-DQT_NO_KEYWORDS)的注释,避免Qt的slots、emit关键字和ROS2依赖的库产生符号冲突。
完成以上修改后重新执行colcon build --symlink-install,source工作空间的setup文件后再启动rviz2即可正常加载插件。
内容的提问来源于stack exchange,提问作者Vishnuprasad Prachandabhanu
相关产品推荐
相关产品推荐

