对于用C编写的共享库项目,如果我用C ++重写部分代码,但保留了完全相同的API,我是否会遇到任何ABI兼容性问题?
答案 0 :(得分:4)
如果您保留相同的API(函数名称和参数类型),那么您应该很高兴。
你 需要做的是用这个包装你的头文件(复制并粘贴自here):
#ifdef __cplusplus
extern "C" {
#endif
// all of your legacy C code here
#ifdef __cplusplus
}
#endif
这可以确保C ++编译器不会破坏这些名称,因此C编译器的外部符号仍然可以与导出链接。