C++ 作为 FFI 语言

C++ as a FFI language

提问人:terenceng 提问时间:6/15/2023 最后编辑:Jan Schultketerenceng 更新时间:6/15/2023 访问量:264

问:

我知道很多人最初用 C++ 而不是 C 编写程序,然后决定将程序的功能打包为库,因此将其重写为 C 库,以便可以从尽可能多的其他不同编程语言调用它。

我的问题是:是否有可能让 C++ 库保持原样(即作为 C++),但仍然可以从许多其他编程语言调用?必须如何修改它才能实现此目标?应该避免 C++ 的哪些特性,以便生成的库像 C 库一样符合 FFI?

如果 C++ 不是一个好的 FFI 语言,那么 rust 还是 C 以外的其他编程语言?

C++ FFI ABI 链接

评论

4赞 Adrian Mole 6/15/2023
导出函数的属性是你的朋友,在这里。extern "C"
0赞 Miles Budnek 6/15/2023
大多数 FFI 库都使用 C,因此您可以用 C++(或 Rust、FORTRAN 等)编写库,但需要类似 C 的接口才能与大多数其他语言的 FFI 实现一起使用。
0赞 Jan Schultke 6/15/2023
这回答了你的问题吗?C++ 中外部“C”的作用是什么?
0赞 terenceng 6/16/2023
让我换一种说法:我想使用 C++(因为它有丰富的工具和功能集)来编写一个可与 C++、C、Rust、Go、Fortran 等互操作的库。假设我想使用 Fortran(也可以是其他语言)与 C++ 库进行互操作。我想(1)从Fortran调用C++库代码,(2)编写回调,以便我可以注册它,C++可以调用Fortran代码等(3)传递参数(对象,值,引用等)并在两种语言之间返回结果。如果一切都是用 C++ 编写的,那就没有问题了;但现实世界并非如此......

答: 暂无答案