对于一个用 C 写的共享库项目,如果我用 C++ 重写部分代码,但保留完全相同的 API,是否会出现 ABI 兼容性问题?
最佳答案
如果您保留相同的 API(函数名称和参数类型),您应该可以继续使用。
您将需要做的是用这个(从here复制粘贴)包装您的头文件:
#ifdef __cplusplus
extern "C" {
#endif
// all of your legacy C code here
#ifdef __cplusplus
}
#endif
这确保 C++ 编译器不会破坏这些名称,因此 C 编译器的外部符号仍然可以链接到导出。
关于c++ - 如果用 C++ 重写了 C 项目的部分代码,但保留了相同的 API,是否存在 ABI 兼容性问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24444387/