Calling C++ code from C

c, c++

Solution

- First, write a C API wrapper to your object-based library. For example if you have a class Foo with a method bar(), in C++ you'd call it as Foo.bar(). In making a C interface you'd have to have a (global) function bar that takes a pointer to Foo (ideally in the form of a void pointer for opacity).

- Wrap the DECLARATIONS for the C API you've exported in extern "C".

(I don't remember all the damned cast operators for C++ off-hand and am too lazy to look it up, so replace (Foo*) with a more specific cast if you like in the following code.)

// My header file for the C API.
extern "C"
{
  void bar(void* fooInstance);
}

// My source file for the C API.
void bar(void* fooInstance)
{
  Foo* inst = (Foo*) fooInstance;
  inst->bar();
}

Problem

Is there any way where I can call C++ code from C code? ``` class a { someFunction(); }; ``` How to call `someFunction()` from a C code? In other words, I am asking how to avoid name mangling here.

Original source

Related problems