C ++库的C接口示例?

时间:2011-11-04 11:38:04

标签: c++ c

我正在为C ++库编写C接口,我正在寻找一些高质量的示例(或最佳实践)。

到目前为止,这个看起来很有希望:http://czmq.zeromq.org/manual:czmq

还有其他建议吗?

6 个答案:

答案 0 :(得分:1)

您可以查看Parma Polyhedra Library作为编写良好的C ++库的优秀C接口的示例。 PPL是一个免费的GPL编辑软件,特别是在GCC编译器中使用。

答案 1 :(得分:1)

另一个高质量的例子是Open Dynamics Engine。它有一个C ++后端和一个C前端。一切都是C可链接的。

答案 2 :(得分:0)

如果您的C ++库在Windows上编写为COM。有一些工具可以自动为它生成C接口。

答案 3 :(得分:0)

我可以建议FTGL这是一个提供C接口的C ++库。以下是两个实现完全相同的示例程序:

另请注意,FTGL使用pImpl paradigm以实现跨版本的二进制兼容性。见here为什么它好。

免责声明:我是FTGL的贡献者。

答案 4 :(得分:0)

libGLU(OpenGL实用程序库)部分用C ++编写:http://cgit.freedesktop.org/mesa/mesa/tree/src/glu

答案 5 :(得分:0)

libzmq是一种奇怪的情况,因为低级C API原本看起来像POSIX套接字,绝对不是面向对象的(我们使它随着时间的推移变得更加一致和有条理)。同时实际​​的库是用C ++编写的。

C ++-to-C接口位于libzmq / src / zmq.cpp中,由一组简单的C函数组成,这些函数调用了真正的' C ++代码。

另一方面,CZMQ旨在提供更优雅的东西,提供一个带有构造函数,析构函数,容器,私有属性等的简单类模型。没有什么激进但是确实将C变成了更优雅的语言。

我不确定CZMQ类方法如何映射到C ++ API,除非该API明确设计为映射。

免责声明:我是CZMQ大部分作者。