Arduino:包括库之间

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Arduino:包括库之间相关的知识,希望对你有一定的参考价值。

我想把IRLIB2包括在我的素描中。作为一个沙箱,我正在使用这个代码(没有包含编译就好了):

#include <IRLibAll.h>

void setup(){}
void loop(){}

IRLib2被打包成一组单独的库。其中有五个,都必须通过arduino库管理器单独安装。我已按照存储库中的说明进行操作。我的sketchbook文件夹现在看起来像这样:libraries

这种布局给我带来了麻烦。 include语句生成以下错误消息:

/home/lhk/sketchbook/libraries/IRLib2/IRLibAll.h:22:0,
                 from sketch_mar04f.ino:1:
/home/lhk/sketchbook/libraries/IRLib2/IRLibDecodeBase.h:13:28: fatal error: IRLibProtocols.h: No such file or directory
compilation terminated.

缺少的IRLibProtocols.h位于IRLibProtocols库中。

这似乎是一个常见的问题:图书馆互相使用。在CMake中,我可以适当地设置包含目录,但是我能看到的唯一工具是arduino IDE中的“Add Library”对话框。

IRLibAll.h应该包含来自IRLib2的所有内容。也可以单独导入库,但这不能解决包含路径的问题。如何正确设置我的代码以包含相互引用的库?

我还在存储库中创建了一个issue

答案

Arduino IDE版本1.6.5-r5及更早版本通常要求您在草图中添加#include指令以获取库依赖关系,以便Arduino IDE知道需要将哪些文件夹添加到包含路径。

因此,一种解决方案是将以下行添加到草图中:

#include <IRLibProtocols.h>
#include <IRLibRecv.h>
#include <IRLibRecvPCI.h>
#include <IRLibFreq.h>

在Arduino IDE 1.6.6中使用arduino-builder工具添加了一个改进的依赖扫描系统。使用任何最新版本的Arduino IDE,您的草图将在不添加任何其他#include指令的情况下编译。

因此,更好的解决方案是更新到最新的Arduino IDE正式版。

由于[许可证文档问题[(https://github.com/arduino/Arduino/pull/2703),当您通过apt install arduino等安装Arduino IDE时,您会得到一个非常过时的版本,这是一个相当于1.0.5的修改版本。您错过了过去4年中所做的所有改进。最好始终安装从https://www.arduino.cc/en/Main/Software下载的官方Arduino IDE。

以上是关于Arduino:包括库之间的主要内容,如果未能解决你的问题,请参考以下文章

Arduino与Proteus仿真实例-两个Arduino之间SPI通信仿真

Scheduler.h 库 Arduino

Arduino框架下ESP8266与ESP8266之间SPI主从收发通讯示例

python和arduino之间的串行通信

未指定 CLion 目标 - 无目标

无法使用pyserial在arduino和python之间进行通信