.NET(CLR)和Mono中的语言互操作性 让我说我需要使用Python和C++。我可以用Python C API调用C++中的python函数,并且可以用SWIG或等效的方法进行反向操作。p>

.NET(CLR)和Mono中的语言互操作性 让我说我需要使用Python和C++。我可以用Python C API调用C++中的python函数,并且可以用SWIG或等效的方法进行反向操作。p>,.net,mono,clr,.net,Mono,Clr,NET怎么样?我知道有IronPython和C#最终生成.NET汇编。NET中是否有定义良好的语言互操作性机制,以便可以使用来自任何语言的任何函数调用 如果是,其机制是什么 如果没有,我们可以做些什么将函数从一种语言调用到另一种语言 NET机制在语言互操作性方面与MONO相同 .Net方法可以使用或调用本机方法 本机代码可以通过或调用.Net代码 我不知道Mono。如果你说的是IronPython和C#,那么这两种语言可以通过CLI(即,客户端)无缝地进行互操作。这意味着,C代码中的方法可

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

  • 如果是,其机制是什么
  • 如果没有,我们可以做些什么将函数从一种语言调用到另一种语言
  • NET机制在语言互操作性方面与MONO相同
      • .Net方法可以使用或调用本机方法
      • 本机代码可以通过或调用.Net代码

      我不知道Mono。

      如果你说的是IronPython和C#,那么这两种语言可以通过CLI(即,客户端)无缝地进行互操作。这意味着,C代码中的方法可以直接从IronPython访问,反之亦然

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


      Mono基本上是一样的,您只需小心使用p/Invoke声明(即,您不能引用“lua51.dll,因为Linux有.so文件,而不是.dll文件)

      Mono会自动将共享库名称从lib.dll重新映射到当前操作系统使用的任何约定(Linux上的lib.so,OSX上的lib.dylib,等等),所以你只需要为目标操作系统提供一个兼容的共享库。哦,我不知道。我知道如果你只是使用“lib”而不是“lib.dll”或“lib.so”,那么这两个库都可以,但我想这是有意义的。