假设我需要使用Python和C++.我可以使用Python C API从C++调用Python函数,并且可以使用SWIG或等效函数进行反向操作.
.NET怎么样?我知道IronPython和C#最终会生成.NET程序集.在.NET中是否有任何定义良好的语言互操作机制,以便可以使用任何语言的任何函数调用?
如果您正在谈论IronPython和C#,那么这两种语言可以通过CLI(即公共语言基础结构)无缝地互操作.这意味着,C#代码中的方法可以直接从IronPython访问,反之亦然.
对于不直接编译为.NET字节码的其他语言(例如Lua),则必须使用P/Invoke来调用C API(或使用其他人已经编写过的语言,如Lua的LuaInterface).
Mono基本相同,你只需要小心你的P/Invoke声明(即你不能引用"lua51 .dll ",因为Linux有.so文件,而不是.dll文件)