我是 Arduino
的新手,所以我的问题可能很愚蠢,但我不得不问!
我为我的 nodeMcu
芯片做了一个 mqtt
客户端,我有这个错误
/Users/mikevorisis/Downloads/pubsubclient-master/examples/mqtt_esp8266/mqtt_esp8266.ino:27:26: fatal error: PubSubClient.h: No such file or directory #include
我下载了原版project来自 github,我尝试编译它在 examples/mqtt_esp8266 中的示例,但我又遇到了同样的问题。
我也尝试将 PubSubClient.h 放在同一个文件夹中,但我还是遇到了同样的问题。
有什么想法吗? 提前致谢。
最佳答案
您下载并包含在项目中的文件实际上可能不是头文件。您可能从 github 复制了它的内容并将其粘贴到一个文本文档中,您将该文档另存为扩展名为“.h”的文本文件。
它现在的扩展名为“filename.h.txt”。名称和扩展名只需为“filename.h”。使用另存为,保存时选择“所有文件”,命名为“filename.h”。请务必重新输入文件名,否则它会自动填充现有的“filename.h.txt”(即使您没有看到它!)。
如果文件现在具有正确的扩展名,请将其放在与源代码文件相同的文件夹中。您可以通过在 IDE 中“另存为”来查看源文件所在的目录。
在缺少定义之后您可能会遇到的问题。你看,当你以头文件的形式使用库时,每个头文件必须通常(在这种情况下,是的)伴随一个.cpp文件(不一定具有相同的名称)。这样做的原因是头文件包含声明,而 cpp 文件包含所述声明的定义。换句话说,头文件是库中可用设施的概述,而 cpp 文件实际上实现了它的内容。
编辑:您尝试运行的示例也有 #include <ESP8266WiFi.h>
,一个在您引用的 github 存储库中不可用的文件。我假设这是一个用于 WiFi 模块的库,或者您可以从其他地方获得的库(制造商、其他 git 或它可能与 Arduino IDE 一起提供?)。换句话说,您还需要将其 header 和(可能).cpp 文件添加到您的源目录。
关于c++ - Arduino 项目中没有这样的文件或目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46541473/