5

我正在创建一个新库来一起控制键盘和 LCD。大多数代码似乎都可以编译,但是当它到达我定义 LiquidCristal 变量的行时,它会说:

创建自定义库时,“LiquidCrystal”未命名类型

这是我的 LCDKeypad.h 内容的摘录

// Include types & constants of Wiring core API
#if defined(ARDUINO) && ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#include "WConstants.h"
#endif

// Include LCD library
#include <LiquidCrystal.h>

错误在这一行:

private:
LiquidCrystal lcd( 8, 9, 4, 5, 6, 7 ); // <<-- Error
4

2 回答 2

5

好吧,我读了很多,我发现了一篇关于这个主题的非常有趣的文章:

包括多个库

它表示编译器不会搜索草图文件中未包含的库。破解此问题的方法是强制编译器在加载您的库之前链接它们,包括在我的情况下为草图中的 LiquidCrystal.h。

假设我的库“LCDkeypad”需要 LiquidCrystal。我的主程序(草图)需要包含 LiquidCrystal,以便为我的库“LCDKeypad”加载它。

现在,一件有趣的事情是使用前向声明,所以在我的 LCDKeypad.h 中我将声明“Class LiquidCrystal”但不包含库。我将在 LiquidCrystal.cpp 和草图中进行。我希望这很清楚。

于 2012-08-19T22:57:36.957 回答
1

有两种方法可以做到

  • 如果您正在编写自己的代码,只需创建头文件.h扩展名和相关的c代码作为name_c。添加到主程序时,您需要在双引号中指定头文件名。

代码:

#ifndef LCD_H
#define LCD_H

//Declaration of variable /functions
#endif
  • 如果您尝试从链接下载。然后你需要将代码粘贴到D:\arduino\arduino\libraries

错误问题:

  • 变量的多个声明重叠。

  • 库函数重叠

于 2014-01-08T12:28:00.207 回答