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

How to build and maintain a library for multiple languages?

本文关键字:构建 维护 语言      更新时间:2023-10-16

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

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

它不能是一个独立的服务有一些原因。

是否有其他成熟的替代方案?我正在寻找选项来比较之前,我解决一个。

理想情况下,我想做它使用源到源编译器或源代码生成器。但是我找不到一个能支持以上所有语言的——还有将来可能增加的。

我可能会考虑任何其他绑定生成器,如果它们比SWIG有任何优势的话。

提前感谢任何指示!

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

根据API的风格,SWIG可以在生成绑定时节省一些时间;但是,除非它非常大且规则,否则您可能会发现手工编写绑定更容易。

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

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

这样,你就可以用任何语言编写共享模块,并通过公共协议(如restful web服务)访问它。