aREST icon indicating copy to clipboard operation
aREST copied to clipboard

multiple definition of void aREST::addToBuffer in PlatformIO

Open MostafaDadkhah opened this issue 5 years ago • 5 comments

Hi I can't work with this library in PlatformIO. When building, I encounter the following Errors. What should I do?

Processing nodemcuv2 (platform: espressif8266; board: nodemcuv2; framework: arduino)

Verbose mode can be enabled via -v, --verbose option CONFIGURATION: https://docs.platformio.org/page/boards/espressif8266/nodemcuv2.html PLATFORM: Espressif 8266 2.3.2 > NodeMCU 1.0 (ESP-12E Module) HARDWARE: ESP8266 80MHz, 80KB RAM, 4MB Flash PACKAGES: toolchain-xtensa 2.40802.191122 (4.8.2), tool-esptool 1.413.0 (4.13), tool-esptoolpy 1.20800.0 (2.8.0), framework-arduinoespressif8266 2.20603.191216 (2.6.3) LDF: Library Dependency Finder -> http://bit.ly/configure-pio-ldf LDF Modes: Finder ~ chain, Compatibility ~ soft Found 39 compatible libraries Scanning dependencies... Dependency Graph |-- <FastLED> 3.3.3 | |-- <SPI> 1.0 | |-- <EspSoftwareSerial> 6.4.0 |-- <WebSockets> 2.2.0 | |-- <Hash> 1.0 | |-- <Ethernet(esp8266)> 1.0.4 | | |-- <SPI> 1.0 | |-- <ESP8266WiFi> 1.0 | |-- <SPI> 1.0 |-- <aREST> |-- <ConnectToWIFI> | |-- <ESP8266WiFi> 1.0 |-- <SetAPMode> | |-- <aREST> | |-- <ESP8266WiFi> 1.0 |-- <CheckButton> | |-- <WebSocket> | | |-- <WebSockets> 2.2.0 | | | |-- <Hash> 1.0 | | | |-- <Ethernet(esp8266)> 1.0.4 | | | | |-- <SPI> 1.0 | | | |-- <ESP8266WiFi> 1.0 | | | |-- <SPI> 1.0 |-- <Initialize> |-- <WebSocket> | |-- <WebSockets> 2.2.0 | | |-- <Hash> 1.0 | | |-- <Ethernet(esp8266)> 1.0.4 | | | |-- <SPI> 1.0 | | |-- <ESP8266WiFi> 1.0 | | |-- <SPI> 1.0 |-- <RGBControl> | |-- <FastLED> 3.3.3 | | |-- <SPI> 1.0 | | |-- <EspSoftwareSerial> 6.4.0 Building in release mode Linking .pio/build/nodemcuv2/firmware.elf /Users/mostafadadkhah/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld: .pio/build/nodemcuv2/lib900/libSetAPMode.a(SetAPMode.cpp.o): in function void aREST::addToBuffer<bool>(bool, bool)': SetAPMode.cpp:(.text._ZN5aREST11addToBufferIbEEvT_b+0xc): multiple definition of void aREST::addToBuffer(bool, bool)'; .pio/build/nodemcuv2/src/main.cpp.o:main.cpp:(.text._ZN5aREST11addToBufferIbEEvT_b+0xc): first defined here /Users/mostafadadkhah/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld: .pio/build/nodemcuv2/lib900/libSetAPMode.a(SetAPMode.cpp.o): in function void aREST::addToBuffer<char const*>(char const*, bool)': SetAPMode.cpp:(.text._ZN5aREST11addToBufferIPKcEEvT_b+0x4): multiple definition of void aREST::addToBuffer<char const*>(char const*, bool)'; .pio/build/nodemcuv2/src/main.cpp.o:main.cpp:(.text._ZN5aREST11addToBufferIPKcEEvT_b+0x4): first defined here /Users/mostafadadkhah/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld: .pio/build/nodemcuv2/lib900/libSetAPMode.a(SetAPMode.cpp.o): in function void aREST::addToBuffer<String const*>(String const*, bool)': SetAPMode.cpp:(.text._ZN5aREST11addToBufferIPK6StringEEvT_b+0x4): multiple definition of void aREST::addToBuffer<String const*>(String const*, bool)'; .pio/build/nodemcuv2/src/main.cpp.o:main.cpp:(.text._ZN5aREST11addToBufferIPK6StringEEvT_b+0x4): first defined here /Users/mostafadadkhah/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld: .pio/build/nodemcuv2/lib900/libSetAPMode.a(SetAPMode.cpp.o): in function void aREST::addToBuffer<String>(String, bool)': SetAPMode.cpp:(.text._ZN5aREST11addToBufferI6StringEEvT_b+0x4): multiple definition of void aREST::addToBuffer<String>(String, bool)'; .pio/build/nodemcuv2/src/main.cpp.o:main.cpp:(.text._ZN5aREST11addToBufferI6StringEEvT_b+0x4): first defined here /Users/mostafadadkhah/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld: .pio/build/nodemcuv2/lib900/libSetAPMode.a(SetAPMode.cpp.o): in function void aREST::addToBuffer<char*>(char*, bool)': SetAPMode.cpp:(.text._ZN5aREST11addToBufferIPcEEvT_b+0x4): multiple definition of void aREST::addToBuffer<char*>(char*, bool)'; .pio/build/nodemcuv2/src/main.cpp.o:main.cpp:(.text._ZN5aREST11addToBufferIPcEEvT_b+0x4): first defined here collect2: error: ld returned 1 exit status *** [.pio/build/nodemcuv2/firmware.elf] Error 1 ========================================== [FAILED] Took 2.81 seconds ========================================== The terminal process terminated with exit code: 1

MostafaDadkhah avatar Feb 04 '20 08:02 MostafaDadkhah

There is one big bug in this library. Definition and declaration is in one file. So, when you you use aREST.h in more file... linker won't work.

Davidoff77test avatar Feb 26 '21 09:02 Davidoff77test

@marcoschwartz do you agree? would you agree on splitting the lib into .h and .cpp file?

Rocco83 avatar May 26 '21 16:05 Rocco83

Yes, it will be nice.

Thnx

D. ---------- Původní e-mail ---------- Od: Daniele Palumbo @.> Komu: marcoschwartz/aREST @.> Datum: 26. 5. 2021 18:20:44 Předmět: Re: [marcoschwartz/aREST] multiple definition of void aREST:: addToBuffer in PlatformIO (#278) "

@marcoschwartz(https://github.com/marcoschwartz) do you agree? would you agree on splitting the lib into .h and .cpp file?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub (https://github.com/marcoschwartz/aREST/issues/278#issuecomment-848912265), or unsubscribe (https://github.com/notifications/unsubscribe-auth/AAHACVK2HMNUOHSYR2DZXRLTPUNVNANCNFSM4KPTAENQ) . "

Davidoff77test avatar May 27 '21 08:05 Davidoff77test

I just spent several hours trying to figure this out.

This makes it impossible to have multiple source files in a platformio project.

Has anyone figured out a work around?

tig avatar Jun 28 '21 23:06 tig

I've stumbled upon the same problem and went ahead to split up the header into several files. Result is in the abovementioned pull request that seems to work well for me so far.

BOW-el avatar Apr 12 '22 08:04 BOW-el