所以基本上我试图将自定义C库集成到现有的C ++项目中。我有各种C ++对象需要存储/加载到C DB和具有各种C函数的接口。我需要将我的C ++对象转换为C结构,然后再转换回来。我已经取得了进展,但遇到了内存分配问题。
我知道我这里没有包含任何代码,但我只是想知道这项任务是否有任何一般性提示?我已经在外部“C”中看到了用于通用C ++对象的void *,但我确实需要从/向C ++对象和C结构加载/保存数据。
如果我没有正确说明这一点,请询问!
答案 0 :(得分:2)
使用extern "C"
声明您的C结构:
extern "C" {
struct some_c_struct {
int field1;
char *p;
};
};
然后,在您的C ++代码中,您可以像使用任何其他C ++ some_c_struct
或class
一样使用struct
,保证C兼容性,并成功将它们传入和传出C代码库你正在使用的。
实际上,extern "C"
声明并不需要,但所有语言律师都要求它。此外,您的结构不能使用任何特定于C ++的功能,如虚拟功能。