.NET(CLR)和Mono中的语言互操作性

时间:2010-03-11 02:11:11

标签: .net mono clr

假设我需要使用Python和C ++。我可以使用Python C API从C ++调用Python函数,并且可以使用SWIG或等效函数进行反向操作。

.NET怎么样?我知道IronPython和C#最终会生成.NET程序集。在.NET中是否有任何定义良好的语言互操作机制,以便可以使用任何语言的任何函数调用?

  • 如果是,那有什么机制?
  • 如果没有,可以做些什么来将函数从一种语言调用到另一种语言?
  • 在语言互操作性方面,.NET机制与MONO相同吗?

2 个答案:

答案 0 :(得分:5)

如果您正在谈论IronPython和C#,那么这两种语言可以通过CLI无缝地互操作(即Common Language Infrastructure)。这意味着,C#代码中的方法可以直接从IronPython访问,反之亦然。

对于不直接编译为.NET字节码的其他语言(例如Lua),则必须使用P / Invoke来调用C API(或者使用其他人已编写的API,如{{3对于Lua)。

Mono基本相同,你只需要小心你的P / Invoke声明(即你不能引用“lua51 .dll ”,因为Linux有.so文件,而不是.dll文件)

答案 1 :(得分:3)

我不知道Mono。