ROS下面调用自定义的头文件和.cpp/.so文件(亲测有效)

前言

ROS下面使用已经编译好的ROS package是很方便的,但是大多数我们可能自己定义了一些头文件,想去直接引用,那么如何在ROS下面调用自己的定义的函数呢?

ROS下调用自定义的头文件

如下图所示,在ROS某个工程下面和源文件同级目录下建立两个文件夹,include和lib。
在这里插入图片描述其中include文件夹存放.h头文件,lib文件夹存放编译生成的.so文件,.h文件对应的.cpp文件直接放在源文件同级目录下即可,比如imprcoess.cpp。这里的函数定义可以封装成动态链接库,也可以直接定义成.cpp文件。
在这里插入图片描述
在这里插入图片描述
然后修改下Cmakelist.txt

catkin_package(
   INCLUDE_DIRS include
#  LIBRARIES car_sensor
   CATKIN_DEPENDS cv_bridge image_transport roscpp sensor_msgs std_msgs rospy
#  DEPENDS system_lib
)

include_directories(
  include
  ${catkin_INCLUDE_DIRS}
)

link_directories(
  ${catkin_LIB_DIRS} lib
)

find_package(OpenCV)
add_executable(camera camera.cpp)
target_link_libraries(camera ${catkin_LIBRARIES} ${OpenCV_LIBRARIES} libdximageproc.so libgxgvtl.so libgxiapi.so libgxu3vtl.so libdarknet.so)
#这里的.so文件即是动态链接库,如果编译时找不到动态链接库,请将动态链接库copy到 /usr/lib中

这里的.so文件即是动态链接库,如果编译时找不到动态链接库,请将动态链接库copy到 /usr/lib中。然后编译通过,可以rosrun啦。。。

猜你喜欢

转载自blog.csdn.net/qq_29462849/article/details/88372229