如何将GObjects导出为各种语言

时间:2013-07-03 06:16:00

标签: c glib

GObject Reference Manual表明GObject系统旨在通过使用一些通用的胶水代码将用C编写的函数导出到其他语言。还注意到这种胶水明确地存在于perl和python中。但是,省略了究竟在哪里找到以及如何使用它。

因此,假设我编写了一个新的GObject (for the sake of simplicity, the example given in the same manual),其中包含C源代码和头文件,对其进行编译并对其进行适当安装,并将其定位到系统库的位置。现在我想在Python程序中实例化并使用该对象。或者是Perl程序。甚至是Java程序。或者任何其他具有glib绑定的编程语言。怎么可以做到这一点?

请注意,我想直接使用该对象,最有可能是通过已有的通用粘合代码。我知道有可能使用DBus从正在运行的C程序中导出对象并使用Python访问它。但我没有寻找IPC解决方案。编译的C库对象应或多或少地直接导出到另一种编程语言。

2 个答案:

答案 0 :(得分:1)

以下是一些示例。 GType和GObject是标准,不提供胶水代码。您只想查找您想要使用的语言,看看是否有人已经实现了胶水。如果没有,也许你可以:)

https://wiki.gnome.org/PyGTK/WhatsNew28

http://search.cpan.org/~rmcfarla/Glib-1.020/GType.xs

答案 1 :(得分:1)

您正在寻找GObject Introspection。正确设置后,您可以非常轻松地使用PyGObject(Python),Gjs(JavaScript),Vala等。

显然,所有语言都是不同的,但由于你在Python中听起来最为有趣...... Python GTK+ 3 Tutorial以GTK +为例说明了这个过程。