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

时间:2011-08-12 08:53:37

标签: c++ scala interop

每个人都知道Java和Scala,但C ++和Scala之间存在多少互操作性。一个类中的类可以被另一个使用吗,例如?

3 个答案:

答案 0 :(得分:21)

根本不那么简单。 Java和Scala在同一个虚拟机上工作,而scala的设计与java兼容。

C ++生成本机代码,甚至每个编译器都有自己的方式来生成本机代码。这意味着使用Visual Studio编译的某些类将无法与使用gcc编译的另一个类轻松交互。

如果您需要与C ++交互,则需要使用JNI http://en.wikipedia.org/wiki/Java_Native_Interface的一些粘合剂。我相信将它与scala一起使用应该是直截了当的。 使用Swig http://www.swig.org/

可以使交互更加舒适

答案 1 :(得分:1)

为了实现这种互操作性,两种实现都必须针对相同的中间语言(即Java字节码,.Net IL,LLVM)进行编译。 Scala.Net和C ++ / CLI是最接近的组合 - 都为.Net生成代码。但即便如此,它也不是那么简单,因为Scala中的一个类和C ++中的一个类代表了稍微不同的东西。

通常,Scala代表Scala for Java VM,而C ++代表C ++代替本机代码,所以一般的答案应该是“不比其他两种随机选择的语言更多”。

答案 2 :(得分:1)

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