参考见这里,主要思路是用Wrapper来包裹类,进而通过结构体方式,在C函数中调用C++类的成员函数。我参考了他提供的handle的思路,但是我的wrapper是单例,实际就用不到vector了。
实际使用中遇到了两个问题,第一个是循环依赖,这个通过拆解类的功能,解决了。
第二个是部分文件中无法识别class关键字,原因是ccs的编译器识别机制,如果对应的文件为.c,则调用C编译器,如果该文件或者对应的头文件中包含了cpp对应的头文件,则会导致该头文件也被c编译器解析,进而报错,解决方法是将引用cpp对应头文件的.c的后缀改为cpp,将其内容用extern C{}进行包裹,并注意将cpp对应的头文件放在作用域外面。