我有一组相关的 C++ 类,它们必须从 DLL 包装和导出,以便 C/FFI 库可以轻松使用它。我正在寻找一些“最佳实践”来做到这一点。例如,如何创建和释放对象、如何处理基类、替代解决方案等……
到目前为止,我的一些基本准则是将方法转换为简单的函数,其中包含一个表示“this”指针的额外 void* 参数,包括任何析构函数。构造函数可以保留其原始参数列表,但必须返回一个表示对象的指针。所有内存都应该通过同一组进程范围的分配和空闲例程来处理,并且在某种意义上应该是可热交换的,无论是通过宏还是其他方式。
原文由 Exponent 发布,翻译遵循 CC BY-SA 4.0 许可协议
Foreach 公共方法你需要一个 C 函数。
您还需要一个不透明的指针来在 C 代码中表示您的类。
尽管您可以构建一个包含 void* 和其他信息的结构(例如,如果您想支持数组?),但使用 void* 会更简单。
实现是微不足道的。
将不透明指针转换为 Fred,然后调用该方法。