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

被折叠的 条评论
为什么被折叠?



