【DEBUG】undefined reference to `cv_bridge::toCvShare

使用情况:在一个已经存在的ROS项目中添加Rosbag的图像读取:

操作:按照之前的使用方法,分别在package.xml中以及CMakeList.txt的catkin_package() 中添加了对应的包,但是编译时还是出现了未定义的引用;

解决:

这里主要说一下解决的方法:

首先对于cv_bridge中函数的具体使用方法,大家可以参考博客:CV_Bridge的使用,这里对使用该博客后出现的问题做一个补充;

首先在使用Ros时,如果需要用到新的package,则需要在两个地方添加,1.在该工程对应的package.xml中添加

以cv_bridge为例:

  <buildtool_depend>catkin</buildtool_depend>
  <build_depend>cmake_modules</build_depend>
  <build_depend>roscpp</build_depend>
  <build_depend>sensor_msgs</build_depend>
  <build_depend>std_msgs</build_depend>
  <build_depend>cv_bridge</build_depend>
  <build_depend>image_transport</build_depend>
  <run_depend>cmake_modules</run_depend>
  <run_depend>roscpp</run_depend>
  <run_depend>cv_bridge</run_depend>
  <run_depend>sensor_msgs</run_depend>
  <run_depend>std_msgs</run_depend>
  <run_depend>image_transport</run_depend>

后面四个package都是新添加的,个人理解,这一步的添加和在CMakeLists.txt中的catkin_package()中添加是一个意思,都是方便catkin在编译时能够找到对应的package;同时如果我们使用的是rosbuild,甚至这里不需要catkin_package();

但如果我们使用的时不同的build方法(区分的方式就是在建立可执行文件的时候,用的是rosbuild_add_executable还是add_executable),这时还需要第二步的添加:也就是在findpackage()中将这几个package的名字添加进去,如:

find_package(catkin REQUIRED COMPONENTS
  cmake_modules
  roscpp
  cv_bridge
  sensor_msgs
  image_transport
  std_msgs
)

这样才能编译通过;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值