Hy to everyone
I'm working with SDK15.3 Ble_Blinky example for my nRF52840 Dongle (pca10059).
First to know, I'm wokring with c++ and the whole Project is compiling without any errors.
I added a test class and included it in the main.cpp and also everything worked well.
Then I made an instance of my test1 class and got the error :
03:14:15 **** Incremental Build of configuration Default for project RobEx ****
make all
Compiling file: main.cpp
./main.cpp:562:13: warning: 'void idle_state_handle()' defined but not used [-Wunused-function]
static void idle_state_handle(void)
^~~~~~~~~~~~~~~~~
Linking target: _build/nrf52840_xxaa.out
/opt/gcc-arm-none-eabi-8-2018-q4-major/bin/../lib/gcc/arm-none-eabi/8.2.1/../../../../arm-none-eabi/bin/ld: _build/nrf52840_xxaa/main.cpp.o: in function `main':
/home/sevko/Documents/RobEx//./main.cpp:590: undefined reference to `Test1::Test1()'
/opt/gcc-arm-none-eabi-8-2018-q4-major/bin/../lib/gcc/arm-none-eabi/8.2.1/../../../../arm-none-eabi/bin/ld: /home/sevko/Documents/RobEx//./main.cpp:590: undefined reference to `Test1::~Test1()'
/opt/gcc-arm-none-eabi-8-2018-q4-major/bin/../lib/gcc/arm-none-eabi/8.2.1/../../../../arm-none-eabi/bin/ld: /home/sevko/Documents/RobEx//./main.cpp:590: undefined reference to `__cxa_end_cleanup'
/opt/gcc-arm-none-eabi-8-2018-q4-major/bin/../lib/gcc/arm-none-eabi/8.2.1/../../../../arm-none-eabi/bin/ld: _build/nrf52840_xxaa/main.cpp.o:(.ARM.extab.text.startup.main+0x0): undefined reference to `__gxx_personality_v0'
collect2: error: ld returned 1 exit status
make: *** [_build/nrf52840_xxaa.out] Error 1
components/toolchain/gcc/Makefile.common:292: recipe for target '_build/nrf52840_xxaa.out' failed
"make all" terminated with exit code 2. Build might be incomplete.
My Test1 class :
//=====TEST1.H======
#ifndef TEST1_H_
#define TEST1_H_
class Test1 {
public:
Test1();
virtual ~Test1();
void foo();
};
#endif /* TEST1_H_ */
//=====TEST1.CPP======
#include "Test1.h"
Test1::Test1() {
// TODO Auto-generated constructor stub
}
Test1::~Test1() {
// TODO Auto-generated destructor stub
}
void Test1::foo(){
}
My main.cpp:
int main(void)
{
// Initialize.
log_init();
leds_init();
timers_init();
buttons_init();
power_management_init();
ble_stack_init();
gap_params_init();
gatt_init();
services_init();
advertising_init();
conn_params_init();
APP_ERROR_CHECK(NRF_LOG_INIT(NULL));
// Start execution.
NRF_LOG_INFO("Blinky example started.");
advertising_start();
Test1 tst;
// tst.foo();
// Enter main loop.
for (;;)
{
for(int i = 0 ; i < LEDS_NUMBER ; i++){
bsp_board_led_invert(i);
nrf_delay_ms(250);
}
//idle_state_handle();
}
}
The Test1.cpp and Test1.h are in the same Folder as main.cpp.
I'm not sure if it's a compiler Problem or a software Problem, because I'm using c++ with c code, but maybe someone had a similar error.
Greetings N3210
PS: I had a look on this site https://stackoverflow.com/questions/6045809/link-error-undefined-reference-to-gxx-personality-v0-and-g
I think the compiler somehow doesn't compile in c++. Maybe i have to change something in the Makefile.common.