关于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错误


未完待续……


你可能感兴趣的:(关于C++写C接口)