• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь ESP8266 написание прошивки на CPP

Peter1001

New member
Собственно вот в чём загвоздка.
Изначально писал под ардуино. Но скетч прям катастрофично распух. И я решил его попилить.
Сделал микро демо проект что бы проверить идею. Создал подпапки для модулей. Описал в заголовочных файлах, и реализовал.
Но попытка скомпилировать его валится.
Код:
��������...
Archiving built core (caching) in: C:\Users\Peter\AppData\Local\Temp\arduino_cache_340073\core\core_esp8266_esp8266_generic_CpuFrequency_80,ResetMethod_ck,CrystalFreq_26,FlashFreq_40,FlashMode_dio,FlashSize_512K0,led_2,LwIPVariant_v2mss536,Debug_Disabled,DebugLevel_None____,FlashErase_none,UploadSpeed_256000_e2102ebb4edf2e86d7f3d9e7197ad43e.a
sketch\EspWeather.ino.cpp.o:(.text.loop+0x1c): undefined reference to `Bm_Reader::Bm_Reader(unsigned char)'

sketch\EspWeather.ino.cpp.o:(.text.loop+0x20): undefined reference to `Bm_Reader::Read()'

sketch\EspWeather.ino.cpp.o:(.text.loop+0x24): undefined reference to `Bm_Reader::~Bm_Reader()'

sketch\EspWeather.ino.cpp.o:(.text.loop+0x39): undefined reference to `Bm_Reader::Bm_Reader(unsigned char)'

sketch\EspWeather.ino.cpp.o:(.text.loop+0x41): undefined reference to `Bm_Reader::Read()'

sketch\EspWeather.ino.cpp.o: In function `loop':

d:\Users\Peter\Desktop\SmartHome\Workers\EspWeather\EspWeatherCpp/EspWeather.ino:16: undefined reference to `Bm_Reader::~Bm_Reader()'

collect2.exe: error: ld returned 1 exit status

exit status 1
Такое ощущение что он не может искать в подпапках. И все равно такая же проблема.

структура проекта.

PS: на плюсах уже лет 5 не писал. Все больше C#, Java, TS, но что-то не помню что с таким раньше сталкивался.
 

Юрий Ботов

Moderator
Команда форума
Проблема не "плюсах". Просто у PIO для vscode есть свои особые взгляды на то где что должно лежать и как должно называться:

This directory (lib) is intended for the project specific (private) libraries.
PlatformIO will compile them to static libraries and link to executable file.

The source code of each library should be placed in separate directory, like
"lib/private_lib/[here are source files]".

For example, see how can be organized `Foo` and `Bar` libraries:

|--lib
| |
| |--Bar
| | |--docs
| | |--examples
| | |--src
| | |- Bar.c
| | |- Bar.h
| | |- library.json (optional, custom build options, etc) library.json — PlatformIO 3.6.0a8 documentation
| |
| |--Foo
| | |- Foo.c
| | |- Foo.h
| |
| |- readme.txt --> THIS FILE
|
|- platformio.ini
|--src
|- main.c

Then in `src/main.c` you should use:

#include <Foo.h>
#include <Bar.h>

// rest H/C/CPP code

PlatformIO will find your libraries automatically, configure preprocessor's
include paths and build them.

More information about PlatformIO Library Dependency Finder
- Library Dependency Finder (LDF) — PlatformIO 3.6.0a8 documentation
 

Peter1001

New member
Просто огроменное спасибо. А то arduino ide мало подходит для какой либо разработки :D
А по PlatformIO, сейчас почитал доку. И всё пучком стало :)
 
Сверху Снизу