关于C++写C接口

需求描述:

用C++写一些API,内部实现是用C++做的,但对外暴露的API是纯C的。


方法简单描述:

1)定义API的头文件,不要#include任何C++相关的东西,比如#include <string>

2)定义API的头文件,以

#ifdef __cplusplus
extern "C" {
#endif
开始,以

#ifdef __cplusplus
}
#endif
结束
3)实现部分的.cpp文件,以

#ifdef __cplusplus
extern "C" {
#endif
开始,以

#ifdef __cplusplus
}
#endif
结束

4)实现部分的.cpp文件中,#include任何C++相关的东西,要放在定义extern "C"之前


可能有这种情况发生:

用上面的方法做一个库,另一个纯C的程序调用它,用g++编译能通过,用gcc编译不能通过,提示C++相关的实现没有找到,比如std::string。


参考:

总结:移植(porting),解决undefined reference to错误及unresovled错误


未完待续……


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值