Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

multiple definition of `std::nothrow' #84

Open
jfjlaros opened this issue Aug 6, 2022 · 14 comments · May be fixed by #94
Open

multiple definition of `std::nothrow' #84

jfjlaros opened this issue Aug 6, 2022 · 14 comments · May be fixed by #94

Comments

@jfjlaros
Copy link

jfjlaros commented Aug 6, 2022

When compiling the following sketch,

#include <ArduinoSTL.h>

void setup() {}
void loop() {}

this error is raised:

arduino-cli compile --fqbn arduino:avr:pro --warnings all --output-dir build \
    --build-property compiler.cpp.extra_flags="-pedantic"
new.cpp.o (symbol from plugin): In function `operator new(unsigned int)':
(.text+0x0): multiple definition of `std::nothrow'
/tmp/arduino-sketch-DAE3E2C59CB46B47AC6BC234B0EB1886/libraries/ArduinoSTL/new_handler.cpp.o (symbol from plugin):(.text+0x0): first defined here
collect2: error: ld returned 1 exit status

Commenting out line 22 of src/new_handler.cpp seems to fix the issue, but this perhaps introduces other problems.

My set up:

  • arduino-cli Version: 0.25.1 Commit: 436f0bb9 Date: 2022-07-25T15:01:55Z
  • ArduinoSTL version 1.3.3
  • arduino:avr core version 1.8.5

This issue can be reproduced in the Wokwi simulator.

@fabianoriccardi
Copy link

fabianoriccardi commented Aug 21, 2022

Same here!

Also #79 presents the same issue.

@POberauer
Copy link

downgrading to arduino:avr core version 1.8.3 fixed the issue.

@POberauer
Copy link

POberauer commented Oct 11, 2022

or as @jfjlaros states, remore / comment line 22 in ../ArduinoSTL/src/new_handler.cpp: const std::nothrow_t std::nothrow = { };
since for arduino core v1.8.5, std::nothrow, is already defined in its ../core/arduino/new.cpp file.

@rw3iss
Copy link

rw3iss commented Dec 5, 2022

Was getting the same exact error.
If I open the library file ArduinoSTL/src/new_handler.cpp and comment out line 22:
// const std::nothrow_t std::nothrow = { };
It will allow my program to compile.

@quinn-n
Copy link

quinn-n commented Dec 29, 2022

I'm getting the same error. The workaround posted by @rw3iss works.

@crashback-exe
Copy link

same error here, fix by @rw3iss worked

@mabsch
Copy link

mabsch commented Feb 15, 2023

same error, @rw3iss 's workaround worked.

@zhangyonggang316
Copy link

you are right ,thanks

@odisseano
Copy link

Même erreur ;) Merci @rw3iss

@reymalahay
Copy link

hi all,

is there going to be an official fix to this issue? i.e. a fix that does not require downgrading other libraries nor commenting out lines of code.

please advise.

thanks in advance,
rey malahay

@mw66
Copy link

mw66 commented Jan 20, 2024

Was getting the same exact error. If I open the library file ArduinoSTL/src/new_handler.cpp and comment out line 22: // const std::nothrow_t std::nothrow = { }; It will allow my program to compile.

If this is not needed shall we create a PR to delete it, or guarded in some conditional MACRO?

#ifdef xxx
...
#endif

@jfjlaros
Copy link
Author

I have created PR #94 to implement the suggestion made in the first post of this issue.

jfjlaros added a commit to jfjlaros/ArduinoSTL that referenced this issue Jan 20, 2024
@jfjlaros jfjlaros linked a pull request Jan 21, 2024 that will close this issue
@sjimenez100
Copy link

Was getting the same exact error. If I open the library file ArduinoSTL/src/new_handler.cpp and comment out line 22: // const std::nothrow_t std::nothrow = { }; It will allow my program to compile.

Yep, that fixed it

@Ebola-Chan-bot
Copy link

See my fork that should have fixed this.

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.