8

我目前正在编写一个 Arduino 库,我想在库文件夹的子目录中包含文件。更具体地说,我希望可以从 Arduino 草图中访问这些文件。

这是我的目录结构:

MyLib/MyLib.cpp
MyLib/MyLib.h
MyLib/Extra/SomeNiceFunctions.cpp
MyLib/Extra/SomeNiceFunctions.h

这就是我试图包含文件的方式:

#include <MyLib.h>
#include <Extra/SomeNiceFunctions.h>

显然这是错误的,因为 IDE 包含库文件夹的方式。我还应该尝试什么?我可以将 Extra 文件夹拆分到另一个“库”(另一个文件夹),但这不是我想要的。

编辑:这是我得到的错误undefined reference to 'font8x8'。这在 中定义Extra/SomeNiceFunctions.h

4

4 回答 4

3

不要使用

#include <MyLib.h>
#include <Extra/SomeNiceFunctions.h>

改为使用

#include <arduinolib.h>
#include "MyLib.h"
#include "Extra/SomeNiceFunctions.h"

使用尖括号,编译器在标准文件夹中查找包含文件。您希望您的自定义文件在您的工作目录中。

于 2013-02-20T14:20:54.273 回答
0

关于包含 Arduino/Energia 子文件夹中的 Arduion/Energia 库:查看主包含文件的位置(例如 arduino.h / energia.h)并在目录结构中使用 ..\ 或向下直到到达您想要包含的所需 h 文件。例如。我有:..hardware\cores\cc3200\energia.h ..hardware\libraries\SPI\SPI.h

为了在 .cpp 文件中使用 SPI.h 函数,我必须添加 #include <energia.h>#include <..\..\libraries\SPI\SPI.h

于 2014-11-19T13:37:43.110 回答
0

我对此有一些疑问。我只是想要一个简单的解决方案,而在 CPP 中编写库是正确的方法 - 我画了一个草图 - 比如说 robo.ino 文件并将其添加到一个简单的库包含中 - 这样一个文件夹下的库中只有一个文件称为机器人 - robo.h

├── sketchesfolder
├── libraries
│   ├── robot
│   │   ├── robot.h
├── robotsketch
│   ├── Move.ino

现在在 Move.ino - 我只包含文件

#include <robo.h>

您需要为简单函数添加的唯一内容是原型声明 - 或确保您的函数按首次使用排序。

因此,例如 - 将 Setup() 放在底部和如下函数:

 void halt(int wait); 

作为 robo.h 文件头部的原型定义

它允许您将草图作为通用代码共享,而无需将其转换为 CPP 库。但你当然应该这样做。

于 2018-01-19T21:18:30.167 回答
-1

借用这个堆栈溢出问题

包含路径包括草图的目录、目标目录(/hardware/core//)和 avr 包含目录(/hardware/tools/avr/avr/include/),以及任何库目录(在 /hardware/libraries /) 其中包含一个头文件,该头文件包含在主草图文件中。

尝试

// in myProject.ino
#include <arduinolib.h>
#include "MyLib.h"

// in Mylib.h
#include "./extra/SomeNiceFunctions.h"
于 2013-02-20T17:08:20.097 回答