Ошибка компиляции Arduino: найдено несколько библиотек для "ESP8266WiFi.h". (Wemos D1 R2 Mini / ESP2866) - PullRequest
0 голосов
/ 27 октября 2019

Я пытаюсь скомпилировать проект в Arduino IDE для платы D1 mini / ESP286. Код использует WiFiServer, в пакете библиотеки:

#include <ESP8266WiFi.h>

Я включаю это в несколько различных файлов в проекте.

У меня также есть два типа глобальной константызаголовочные файлы: vars.h и класс Colors.h / Colors.cpp. Заголовок Colors.h, в основном, имеет только определения цвета, и я включаю его в пару других файлов для использования цветов.

Однако при компиляции я получаю такие ошибки, а именно, что он находит несколькобиблиотеки для ESP2866WiFi.h, а также то, что все мои переменные, определенные во включенных заголовочных файлах, имеют «несколько определений», но заголовочные файлы используют парадигму # ifndef / # define / # endif, но, возможно, я делаю это неправильно.

На самом деле давно не программировали на C ++, поэтому, пожалуйста, прости мои потенциально начинающие ошибки. Буду признателен за любой совет!

При компиляции терминал Arduino IDE выдает:

> /Users/rw3iss/Library/Arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-3-20ed2b9/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld:
> sketch/Module.cpp.o:sketch/Colors.h:18: multiple definition of
> `yellow'; sketch/Colors.cpp.o:sketch/Colors.h:18: first defined here
> /Users/rw3iss/Library/Arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-3-20ed2b9/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld:
> sketch/Module.cpp.o:sketch/Colors.h:19: multiple definition of
> `orange'; sketch/Colors.cpp.o:sketch/Colors.h:19: first defined here
> /Users/rw3iss/Library/Arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-3-20ed2b9/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld:
> sketch/Module.cpp.o:sketch/Colors.h:16: multiple definition of
> `green'; sketch/Colors.cpp.o:sketch/Colors.h:16: first defined here

> Multiple libraries were found for "ESP8266WiFi.h"  Used:

> /Users/rw3iss/Library/Arduino15/packages/esp8266/hardware/esp8266/2.5.2/libraries/ESP8266WiFi
> /Users/rw3iss/Library/Arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-3-20ed2b9/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld:
> sketch/Module.cpp.o:sketch/Colors.h:15: multiple definition of `cyan';
> sketch/Colors.cpp.o:sketch/Colors.h:15: first defined here
> /Users/rw3iss/Library/Arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-3-20ed2b9/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld:
> sketch/Module.cpp.o:sketch/Colors.h:14: multiple definition of `blue';
> sketch/Colors.cpp.o:sketch/Colors.h:14: first defined here
/Users/rw3iss/Library/Arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-3- 
20ed2b9/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld: 
sketch/utils.cpp.o:sketch/vars.h:6: multiple definition of `ssid'; 
sketch/AppServer.cpp.o:sketch/vars.h:6: first defined here
collect2: error: ld returned 1 exit status
exit status 1
Error compiling for board LOLIN(WEMOS) D1 R2 & mini.

Я точно не знаю, являются ли они ошибками, но они красные вконсоль, а затем компиляция завершается неудачно, без явной ошибки. Я хотел бы знать, правильно ли я включаю эти переменные / глобальные виды констант. Он скомпилировался до того, как я переписал весь однофайловый / функциональный подход к вещам на основе классов, как это.

Я загрузил весь код здесь, там не так уж много происходит, если кому-то захочется взятьпосмотрите: https://github.com/rw3iss/rgb_light

Если я хочу использовать определения переменных во всем моем проекте, определенном в Colors.h, мне нужно только включить этот файл в любой файл, который ссылается на переменную цвета, правильно? Это потенциально может включать определения цвета несколько раз, но разве это не так:

#ifndef CLASS_H
#define CLASS_H
 // "global" variables here, or class definition, etc
#endif 

Подход в заголовочных файлах предотвращает это?

...