如何为多种语言构建和维护库
How to build and maintain a library for multiple languages?
我需要实现一个库,它将从多种语言调用- Java, Python, Perl和将来可能更多。我讨厌用多种语言一次又一次地实现(和维护)同样的事情。
我能想到的一个选择是用C/c++编写核心功能,并使用SWIG为目标语言生成绑定;或者可以自己编写绑定。
它不能是一个独立的服务有一些原因。
是否有其他成熟的替代方案?我正在寻找选项来比较之前,我解决一个。
理想情况下,我想做它使用源到源编译器或源代码生成器。但是我找不到一个能支持以上所有语言的——还有将来可能增加的。
我可能会考虑任何其他绑定生成器,如果它们比SWIG有任何优势的话。
提前感谢任何指示!
最简单的方法是用C编写带有简单API的库。每一种不晦涩的语言都有一些与C代码接口的方法。
根据API的风格,SWIG可以在生成绑定时节省一些时间;但是,除非它非常大且规则,否则您可能会发现手工编写绑定更容易。
一些语言(至少在你的问题中是Python)有一个FFI机制,允许你用目标语言编写整个绑定,使它更容易部署和维护。请注意,其中大多数都集中在C api上,而不是c++。
取决于您计划如何访问库,是否可以通过Web服务公开公共API ?
这样,你就可以用任何语言编写共享模块,并通过公共协议(如restful web服务)访问它。
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- 无法在 CLion 中构建 C++ 项目
- 函数向量_指针有不同的原型,我可以构建一个吗
- 如何使用ndk-build.cmd构建Android.so文件
- libssh 的函数在构建 libssh 时无法在 Qt 和 cmake 错误中找到
- 使用cmake从源代码构建MySQL连接器/C++失败(与以前的声明冲突)
- VSCode-有一个红色下划线,但程序构建和运行正确,并且出现配音错误
- 构建可组合有向图(扫描仪生成器的汤普森构造算法)
- 如何维护资源管理器项目视图中当前可见的项目列表
- 维护unordered_map但同时每一步都需要最低的映射值
- 无法使用Qt Creator在Windows中构建yaml-cpp
- 构建一个由C和C++文件组成的库
- llvm构建器向基本块添加终止符
- FLTK 2.0构建和演示,适用于VS2019的2011年左右的代码库
- 如何跨平台将二进制资源构建到程序中?
- 将 OpenCV 与 CMAKE 中的项目一起构建为第三方库的正确方法
- 如何解决 Ninja c++ 构建和执行问题
- 如何为多种语言构建和维护库
- 为可维护性和封装构建c++类层次结构
- 维护32/64位构建的通用源代码,并使用正确的库