混合语言 - Python和Objective-C

时间:2012-08-08 23:30:07

标签: python objective-c cross-language

我知道Objective-C ++可以存在,因为Objective-C和C ++在C中有共同点。但Objective-C如何与Python共存?我知道它必须是可能的,因为wxPython使用Cocoa来绘制接口。

我正在为OS X编写一个纸牌游戏引擎。它将能够玩多个游戏(Klondike,Spider,Free Cell,甚至可能是Hearts或Poker)。它将与Game Center一起使用,所以我需要提供Cocoa框架,但是我想编写一个Python API,所以我可以用Python编写游戏(因为它更容易使用且更具动态性)。我将如何在我自己的应用程序中实现这种语言混合?

2 个答案:

答案 0 :(得分:2)

如果Python应用程序使用已编译的外部库,则扩展 Python。这样做的文档是here

如果编译的应用程序使用Python进行脚本编写,那么这就是嵌入 Python。这样做的文档是here

答案 1 :(得分:1)

我不是Cocoa的专家,但我认为你误解了使用它的感觉。 Cocoa只是一个导出一些功能的库。它可用于任何能够理解函数签名的东西。这并不意味着那件事必须与客观C兼容。它只是意味着它必须能够理解调用约定。

我很确定,Python可以在标准C和ObjC运行时运行(因为IIRC它是前者的扩展),所以我不明白为什么不可能为Python创建Cocoa绑定。 Apple似乎支持它https://developer.apple.com/technologies/mac/cocoa.html

  

Objective-C的动态运行时类似于许多现代脚本语言,因此可以轻松映射Cocoa     使用 Cocoa Bridge 的其他语言的功能。通过Cocoa Bridge,开发人员可以创建一流的     使用AppleScript,Ruby和Python的Mac OS X应用程序。

因此,您需要检查的下一个关键字是: Cocoa Bridge 也许https://developer.apple.com/cocoa/pyobjc.html也是?