Linux嵌入式开发笔记(九)ROS2中调用自定义库(cpp+h)的方法

时间:2024-05-22 11:28:37

首先,已经可以根据demo仿写自己的工程,同时也就调用了系统自带的函数,这些函数在demo都有使用,很容易成功;其次,在上一篇中介绍了ROS2中系统API函数原型,这样也就可以调用demo中没有用到的系统中的函数;现在记录一下,ROS2中如何调用自定义cpp文件和h文件的方法。

先来干货再举例,在Ubuntu1804中是没有IDE编译器的,所以自定义的cpp文件和h文件需要手动关联起来,同时调用路径也需要手动添加。新建一个include文件夹,在其中新建ZtMathLibrary.cpp和ZtMathLibrary.h两个文件。

ZtMathLibrary.cpp内容如下:

Linux嵌入式开发笔记(九)ROS2中调用自定义库(cpp+h)的方法

ZtMathLibrary.h内容如下:

Linux嵌入式开发笔记(九)ROS2中调用自定义库(cpp+h)的方法

重点来了,在CMakeLists.txt中添加寻找include文件夹的路径;同时需要将ZtMathLibrary.cpp文件进行编译,传统的IDE编译器中会自动编译.cpp文件,并将其与.h文件关联,在Ubuntu1804系统中需要手动编译.cpp文件才可以与.h文件关联。

添加如下内容:

Linux嵌入式开发笔记(九)ROS2中调用自定义库(cpp+h)的方法

Linux嵌入式开发笔记(九)ROS2中调用自定义库(cpp+h)的方法

下面就是调用了,首先在主函数文件中声明ZtMathLibrary.h文件

#include "ZtMathLibrary.h";

如果是写在库中函数是写在namespac中的,需要引用using namespace CHJ_RJZX_ZtLibrary;

在主函数中将需要调用的类进行实例化,再调用类中函数,调用如下:

Linux嵌入式开发笔记(九)ROS2中调用自定义库(cpp+h)的方法

至于为什么要自建库呢,方便阅读和管理,可以有自建的数学库,纯算法库,校验库等等。