c++和Scala之间有多少互操作性

How much interoperability is there between C++ and Scala?

本文关键字:多少 互操作性 之间 Scala c++      更新时间:2023-10-16

每个人都知道Java和Scala,但是c++和Scala之间有多少互操作性呢?例如,来自其中一个的类可以被另一个使用吗?

根本没那么简单。Java和Scala在同一个虚拟机上工作,Scala被设计成可以很好地与Java一起工作。

c++生成本机代码,甚至每个编译器都有自己的方式来生成本机代码。这意味着一些用Visual Studio编译的类将不容易与另一个用gcc编译的类交互。

如果你需要与c++交互,你需要使用JNI的胶水http://en.wikipedia.org/wiki/Java_Native_Interface。我相信在scala中使用它应该很简单。您可以使用Swig使交互更加舒适http://www.swig.org/

为了使这种互操作性成为可能,两个实现必须为相同的中间语言(即Java字节码,. net IL, LLVM)编译。Scala。.Net和c++/CLI是最接近的组合——两者都为。Net生成代码。但即使这样也没那么简单,因为Scala中的类和c++中的类代表的东西略有不同。

一般来说,Scala代表Java VM的Scala, c++代表原生代码的c++,所以一般的答案应该是"不会比其他任意两种随机选择的语言多多少"。

我会去看看JNAerator。它构建了从C/c++/Obj-C头文件到Java接口的桥梁。