ubuntu 16.04使用IntelRealSense D435i调用realsense ROS包时,报symbol lookup error和undefined symbol错误的解决办法

在ubuntu 16.04使用IntelRealSense D435i调用realsense ROS包时,运行

roscore

roslaunch realsense2_camera rs_rgbd.launch

出现错误,报错如下:

/opt/ros/kinetic/lib/nodelet/nodelet: symbol lookup error: /home/xxx/catkin_ws/devel/lib//librealsense2_camera.so: undefined symbol: _ZN20ddynamic_reconfigure19DDynamicReconfigure16registerVariableIiEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEET_RKN5boost8functionIFvSA_EEES9_SA_SA_

解决思路:
1)查找系统内librealsense2_camera.so的数量
sudo find / -name librealsense2_camera.so
2)如果发现librealsense2_camera.so在不同路径下存在多个文件时,比如:
/home/xxx/catkin_ws/devel/lib/librealsense2_camera.so
/opt/ros/kinetic/lib/librealsense2_camera.so
3)这就产生了引用歧义,即/opt/ros/kinetic/lib/nodelet/nodelet不知道引用哪个库文件进行加载,经测试发现,nodelet原本引用/opt/ros/kinetic/lib/路径下的
librealsense2_camera.so文件,但是,链接到/home/xxx/catkin_ws/devel/lib/路径下的librealsense2_camera.so文件。
4)删除/home/xxx/catkin_ws/devel/lib/路径下的librealsense2_camera.so文件,重新运行后,恢复正常。

你可能感兴趣的:(机器视觉及V-SLAM,linux,ubuntu)