如何为多种语言构建和维护库?

时间:2015-09-11 19:15:15

标签: java python c++ perl

我需要实现一个将从多种语言调用的库 - Java,Python,Perl以及未来可能更多。我讨厌用多种语言一次又一次地实现(和维护)同样的事情。

我能想到的一个选择是用C / C ++编写核心功能,并使用SWIG为目标语言生成绑定;或者自己写点缀。

这是为什么它不能成为一项独立服务的原因。

还有其他成熟的选择吗?在寻找一个之前,我正在寻找比较的选项。

理想情况下,我希望使用源代码编译器或源代码生成器来实现。但是我找不到支持所有上述语言的语言 - 有可能在将来添加。

如果它们提供超过SWIG的任何优势,我可以考虑任何替代绑定生成器。

提前感谢任何指针!

2 个答案:

答案 0 :(得分:2)

最简单的方法是使用简单的API在C中编写库。每种非晦涩的语言都有一些与C代码接口的方式。

根据API的样式,SWIG可以节省一些时间来生成绑定;但除非它非常大且经常,你可能会发现手工编写绑定更容易。

某些语言(至少是你问题中的Python)有一个FFI机制,它允许你用目标语言编写整个绑定,使其更易于部署和维护。请注意,其中大多数都专注于C API,而不是C ++。

答案 1 :(得分:-1)

取决于您如何计划访问库,是否可以通过Web服务公开公共API?

这样您就可以用任何语言编写共享模块,并通过RESTfull Web服务等通用协议访问它。

了解微服务架构。