[英]How to compile a simple Arduino program?
我开始学习/编程 Arduino,但我不明白为什么在 Visual Studio 2017 中使用 Visual Micro 或 Arduino IDE 编译我的程序时会出现语法错误。
sketch\SketchIncomeEligible.ino.cpp.o:(.text.setup+0x0): undefined reference to `WiFi_Setup()'
sketch\SketchIncomeEligible.ino.cpp.o: In function `setup':
C:\Users\C113850\source\repos\Income_Eligible_Price_Display\src\SketchIncomeEligible\SketchIncomeEligible/SketchIncomeEligible.ino:6: undefined reference to `WiFi_Setup()'
collect2.exe: error: ld returned 1 exit status
exit status 1
Error compiling for board Adafruit Feather HUZZAH ESP8266.
Arduino: 1.8.9 (Windows 10), Board: "Adafruit Feather HUZZAH ESP8266, 80 MHz, Flash, 4M (1M SPIFFS), v2 Lower Memory, Disabled, None, Only Sketch, 115200"
sketch\SketchIncomeEligible.ino.cpp.o:(.text.setup+0x0): undefined reference to `WiFi_Setup()'
sketch\SketchIncomeEligible.ino.cpp.o: In function `setup':
C:\Users\C113850\source\repos\Income_Eligible_Price_Display\src\SketchIncomeEligible\SketchIncomeEligible/SketchIncomeEligible.ino:6: undefined reference to `WiFi_Setup()'
collect2.exe: error: ld returned 1 exit status
exit status 1
Error compiling for board Adafruit Feather HUZZAH ESP8266.
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
以下是我的代码:
#ifndef _SKETCHWIFI_h
#define _SKETCHWIFI_h
int WiFi_Setup();
#endif
#include "SketchWiFi.h"
int WiFi_Setup()
{
// put your setup code here, to run once:
return 1; // Successful
}
#include "SketchWiFi.h"
void setup() {
Serial.begin(115200);
Serial.println("Begin setup");
WiFi_Setup();
Serial.println("End setup");
}
void loop() {
// put your main code here, to run repeatedly:
}
目录结构:
Visual Studio 2017 中的项目结构
根据发布的建议,我在 GitHub 上阅读了以下内容:
没有对草图中具有除 .ino 以外的任何扩展名的文件进行预处理。 此外,草图中的 .h 文件不会自动从主草图文件中#included。 此外,如果您想从 .cpp 文件(如从草图生成的)调用 .c 文件中定义的函数,则需要将其声明包装在定义的“extern“C”{}”块中仅在 C++ 文件中。
所以这解释了我的问题。 我将我的简单函数 'WiFi_Setup()' 包含在一个类中,现在它编译成功。
class WifiNetwork
{
protected:
public:
void WiFi_Setup();
};
Arduino 似乎希望一切都生活在课堂上。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.