This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Why is my project not working anymore when adding C++ code?

I have a project with only C code that compiles and has been working on for years. Lately, there was a need to add some more functionality that requires some C++ code so I added a small C++ test code to see if it would work. This is what I added:

events.h

#ifndef _EVENTS_H
#define _EVENTS_H

#include <stdint.h>

#ifdef __cplusplus
extern "C"
{
#endif

void evtAddCurrent(const float current);

#ifdef __cplusplus
}
#endif

#endif

events.cpp

#include <vector>

#include "events.h"


static std::vector < float > current_values;


void evtAddCurrent(const float current)
{
    current_values.push_back(current);
}

Then I include the events.h in one of my .c files. I add the --cpp11 flag only to the events.cpp file because if I add that to the whole project then I get about 350 errors. When I do this, the project compiles just fine but now the code doesn't work at all. I don't know if it gets corrupted and why. I have no idea what is happening.

I'm working with NXP MQX RTOS and I don't know if there are one or more files I should be adding or some other configurations I should be performing on my project for it to work. I repeat, the code compiles just fine but the code doesn't run at all (and I'm not even calling the C++ function, just adding the code to the compilation and linking). I can even verify that the c++ function is present on the resulting image by looking at the map file.

Does anyone know what could be happening? What am I missing?


This is my environment:


IDE-Version:
µVision V5.26.2.0
Copyright (C) 2018 ARM Ltd and ARM Germany GmbH. All rights reserved.

License Information:
Flex license: MDK-ARM Plus: 3 user(s) (mdk_plus)
Support: Nov 2018

Tool Version Numbers:
Toolchain: MDK-ARM Plus: 3 user(s) Version: 5.26.2.0
Toolchain Path: C:\Keil_v5\ARM\ARMCC\Bin
C Compiler: Armcc.exe V5.06 update 6 (build 750)
Assembler: Armasm.exe V5.06 update 6 (build 750)
Linker/Locator: ArmLink.exe V5.06 update 6 (build 750)
Library Manager: ArmAr.exe V5.06 update 6 (build 750)
Hex Converter: FromElf.exe V5.06 update 6 (build 750)
CPU DLL: SARMCM3.DLL V5.26.2.0
Dialog DLL: DCM.DLL V1.17.2.0
Target DLL: UL2CM3.DLL V1.161.6.0
Dialog DLL: TCM.DLL V1.36.1.0