假设我需要使用 Python 和 C++。我可以使用 Python C API 从 C++ 调用 Python 函数,并且可以使用 SWIG 或等效函数进行反向调用。
.NET 怎么样?我知道有 IronPython 和 C# 最终生成 .NET 程序集。 .NET 中是否有任何定义明确的语言互操作性机制,以便可以使用来自任何语言的任何函数调用?
- 如果是,其机制是什么?
- 如果不是,如何将函数从一种语言调用到另一种语言?
- .NET 机制在语言互操作性方面是否与 MONO 相同?
最佳答案
如果您谈论的是 IronPython 和 C#,那么这两种语言可以通过 CLI(即 Common Language Infrastructure)无缝互操作。这意味着,C# 代码中的方法可直接从 IronPython 访问,反之亦然。
对于其他不直接编译为 .NET 字节码的语言(例如 Lua),您将不得不使用 P/Invoke 来调用 C API(或使用其他人已经编写的 API,例如 LuaInterface用于 Lua)。
Mono 基本上是一样的,你只需要小心你的 P/Invoke 声明(即你不能引用“lua51 .dll”,因为 Linux 有 .so 文件,而不是 .dll文件)
关于.net - .NET (CLR) 和 Mono 中的语言互操作性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2422090/