我知道许多大型应用程序(如视频游戏)都是使用多种语言创建的。例如,游戏/物理引擎可能是用C ++编写的,而游戏任务,GUI则是用Python或Lua编写的。
我理解为什么这种角色划分已经完成;将低级语言用于需要极端优化,调整,效率和速度的任务,同时使用更高级别的语言来加快生产时间,减少令人讨厌的错误等。
最近,我决定开展一个更大的个人项目,并希望将项目的部分内容与上述相似。在这个时间点,我真的很困惑语言之间的互操作性(尤其是编译与解释)之间的互操作性。
我非常熟悉从ANSCII代码测试到加载可执行文件的细节,当用C / C ++编写时。我非常好奇从像许多不同语言构建的视频游戏这样的东西。这是一个大/广泛的问题,但具体我感兴趣的是:
我实际上很难找到机器级发生的事情的信息,所以任何帮助都会受到赞赏。虽然我对软件的互操作很感兴趣,但我对C ++和Python的交互特别感兴趣。
非常感谢您的任何见解,即使它只是指向我可以找到更多信息的地方。
答案 0 :(得分:2)
在python的特定情况下,你基本上有三个选项(这通常适用于所有人):
C ++中的主机python:从C ++程序的角度来看,python解释器是一个C库。在python方面,你可能需要也可能不需要使用像ctypes这样的东西来暴露C(++)api。
Python使用C ++代码作为DLL / SOs - C ++代码可能对python一无所知,python肯定必须使用外部函数接口。
进程间通信 - 基本上,运行两个独立的进程,它们通过套接字进行通信。如今,您可能会使用某种Web服务架构来实现这一目标。
答案 1 :(得分:0)
取决于您想要做什么:
看看SWIG:http://www.swig.org/这是一个旨在将C / C ++代码与Python,Tcl,Perl,Ruby等连接起来的工具。常见的用例是Python接口(图形或not)将调用C / C ++代码。 SWIG将解析C / C ++代码以生成接口。
Libpython:它是一个允许您嵌入Python代码的库。您在此处有一些示例:http://docs.python.org/3.0/extending/embedding.html