从C调用C ++代码

有什么方法可以从C代码调用C ++代码吗?

class a { someFunction(); }; 

如何从C代码调用someFunction() ? 换句话说,我在这里问如何避免名称损坏。

  1. 首先,将C API包装器写入基于对象的库。 例如,如果你有一个带有方法bar()的类Foo,在C ++中你将它称为Foo.bar()。 在创建一个C接口时,你必须有一个(全局)函数栏,它带有一个指向Foo的指针(理想情况下是一个不透明度的void指针forms)。
  2. 为您在extern“C”中导出的C API包装DECLARATIONS。

(我不记得C ++的所有该死的强制转换操作符并且懒得查找它,所以如果您喜欢以下代码,请使用更具体的转换替换(Foo *)。)

 // 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(); }