c++ - 如何拥有可被多种语言调用的 C++ 库?

标签 c++ java-native-interface ffi

我的团队构建了一个 C++ 库,它需要在 Android 上由 Java 调用,但也应该可以由其他语言调用:Swift、Flutter、其他 C++ 代码库等...

挑战在于我们不希望每次更新 API 时都必须手动更新各种 FFI(JNI、Obj-C++、Dart FFI 等)。 执行此操作的最佳方法是什么?

最佳答案

一种方法是在库中有一个可调用函数,它接受一个字符串或一个字节数组。该字符串/数组可以是 JSON 或序列化的 Google Protocol Buffer 。相同的方法可用于从您的函数返回值。

通过这种方式,您只需实现一次 FFI,但会在运行时支付序列化/反序列化费用。

关于c++ - 如何拥有可被多种语言调用的 C++ 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58823142/

相关文章:

java - JVM 在没有指定帧的情况下崩溃,只有 "timer expired, abort"

java - 如何从 SWIG 中的 C 指针生成 Java 数组

haskell - Haskell 中的 FFI,关于 LANGUAGE CPP 的问题以及如何在 FFI 中使用 c 结构

c - 在 C 中,给定一个可变的参数列表,如何使用它们构建函数调用?

c++ - 如何在 C++ 中将字符串转换为 vector ?

c++ - 用数组和 C++ 字符串实现哈希算法 - 段错误(核心转储)

android - 如何将字符数组从 JNI 发送到 android

rust - 是否可以确保在编译时,在程序生命周期中的任何给定时间点,给定结构最多仅存在一次?

c++ - 如何使用 Clipper 确定两个多边形是否相交?

c++ - SDL : Calling SDL_CreateRenderer Segfaults