我听说有些人在同一个项目中使用多种编程语言。我无法想象这些语言是如何相互交互的。
我的意思是,Java没有像
myProgram.callCfunction(parameters);
从来没有发生过,或者我错了吗?
我听说有些人在同一个项目中使用多种编程语言。我无法想象这些语言是如何相互交互的。
我的意思是,Java没有像
myProgram.callCfunction(parameters);
从来没有发生过,或者我错了吗?
有几种方法可以让不同语言的代码直接交互。只要在位和字节级别上传递的数据格式正确,那么不同语言之间就可以进行交互操作。这种方法是传统Windows DLL开发中使用的。即使在不同平台上,如果您能够正确设置格式(有兴趣的话,请查看大/小端),只要您的链接器(而不是编译器)知道如何将代码组合在一起,它就可以正常工作。
除此之外,还有许多其他方式可以让不同语言相互通信。在.Net世界中,代码被编译成IL代码,对于每种语言来说都是相同的,因此C#、VB.Net在内部都是相同的,并且可以无缝调用/处理彼此的代码。
除了上面列举的例子,将Python代码优化为C或C++也是相当常见的,或者编写一个C库来将另一个库绑定到Python。
进程间通信是更好的方法,如果你想要使用 Node.js 调用 Python 函数,可以参考这段代码。
index.js
module.py
index.py
import sys
from module import say_hello
if sys.argv[1] == "say_hello":
say_hello(sys.argv[2])
如果您运行index.js文件,它将使用py应用程序生成子进程,并将index.py文件路径作为argv传递以运行该文件。 index.py将检查argv,如果index 1中的argv是say_hello,则将使用模块中的say_hello函数,并将存在于argv [2]中的名称传递给该函数。最后,print函数将写入stdout,javascript文件正在侦听来自stdout的“data”事件,然后在获取数据后,index.js将使用console.log函数在终端中打印输出为“hello MaDz”。
在高级方式中,应用程序使用stdin和stdout,不依赖于argv,我不是Python专业人员,无法做到这一点。