Can't build: undefined reference to
I have an extremely simple project in platformio with a main.cpp and class (.h + .cpp).
main.cpp
#include <Arduino.h>
#include <painlessMesh.h>
#include "PadButton.h"
DynamicJsonDocument doc(1024);
PadButton but(doc);
void setup(){}
void loop(){}
PadButton.h
#pragma once
#ifndef PadButton_h
#define PadButton_h
#include <ArduinoJson.h>
class PadButton
{
public:
PadButton(const DynamicJsonDocument &config);
};
#endif
PadButton.cpp
#include <ArduinoJson.h>
#include "PadButton.h"
PadButton::PadButton(const DynamicJsonDocument &config){}
platformio.ini
[env:esp01]
platform = espressif8266
board = esp01
framework = arduino
lib_deps = painlessmesh/painlessMesh@^1.4.7
I'm getting the following error:
c:/users/paolo/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: .pio\build\esp01\src\main.cpp.o:(.text.startup._GLOBAL__sub_I_doc+0x8): undefined reference to `PadButton::PadButton(ArduinoJson6185_D1::BasicJsonDocument<ArduinoJson6185_D1::DefaultAllocator> const&)'
c:/users/paolo/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: .pio\build\esp01\src\main.cpp.o: in function `_GLOBAL__sub_I_doc':
main.cpp:(.text.startup._GLOBAL__sub_I_doc+0x2e): undefined reference to `PadButton::PadButton(ArduinoJson6185_D1::BasicJsonDocument<ArduinoJson6185_D1::DefaultAllocator> const&)'
collect2.exe: error: ld returned 1 exit status
*** [.pio\build\esp01\firmware.elf] Error 1
I think it's something related to the include #include <ArduinoJson.h> in PadButton.cpp file.
If I move the constructor implementation from PadButton.cpp to PadButton.h the problem disappear, but of course I don't wanna do it.
Maybe it's related to this issue, too: #376 (closed)