当前位置:   article > 正文

在C文件中调用C++代码---笔记_.c文件写c++

.c文件写c++
背景:

我们提供的so库中,代码是纯 c++ 代码,里面包含了cpp 的各种特性:类、虚函数等等。但是由于客户平台原因,他们使用的是纯 C 语言,也就是代码文件的后缀也是以 “.c” 结尾的。他们需要在 C 文件中调用我们库里面的 CPP 接口,在编译的时候,编译器一直报找不到接口。

第一次尝试:

通过在我们的 CPP 代码里面加 “extern c” 的方式,错误如故;

第二次尝试:

新创建一个 CPP 文件,在该文件里面以 C 语言的风格,封装调用一次我们 CPP SO 库里面的接口(包括实例化对象等等),然后客户在他们的C文件中,调用进一步封装过后的接口,问题解决。这种解决方法,也就是网络上到处使用的包裹函数方法

分析

浅分析一下:C 语言里面是没有面向对象的特性,而 CPP 里面是有的。CPP 向下兼容 C 语言特性,但是 C 并不兼容 CPP 特性。

第一种情况

如果CPP不涉及到面向对象方面的东西(也就是类等等特性),其实就是一种类 C 语言的风格,这个时候,使用 “extern C” 和 “__cplusplus” 宏就可以完成 C 文件里面的代码可以直接调用 CPP 文件里面的代码

第二种情况

而如果涉及到了类、虚函数等等 CPP 特性的东西,单独靠 “extern C” 和 “__cplusplus” 宏是搞不定的。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/194909
推荐阅读
相关标签
  

闽ICP备14008679号