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

pro*_*eek 2 .net clr mono

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

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

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

Dea*_*ing 5

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

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

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