使用带有GObject Introspection的C ++绑定

时间:2013-02-20 11:53:27

标签: c++ linux gnome gobject gobject-introspection

我决定在项目中使用Goffice库。但是我用C ++编写它,所以我更喜欢使用C ++类接口,就像我使用gtkmm而不是直接使用GTK +一样。

文档(见上面的链接)说我可以使用GObject Introspection。所以我开始读它了。我阅读,阅读和阅读,我只是无法理解如何使用GOffice的任何绑定。我在我的系统上以及PackageKit安装的文件列表中查找了一个goffice gi-repository / typelib文件。一无所获。我检查了PackageKit,如果goffice或goffice-devel包依赖于gobject内省包。也许他们间接依赖,但他们不直接依赖它(否则我会在列表中看到它)。

我尝试过并试过,但我找不到一个资源,可以简单地解释如何使用GObject编写的库,例如GOffice,并将其用于其他语言,例如Python,或者在我的例子中是C ++。当然,我可以直接使用C函数,但重点是我希望有一个类似于gtkmm的接口。

(我使用GNU / Linux,用gtkmm和GNU构建系统编写桌面应用程序,goffice版本0.10)

3 个答案:

答案 0 :(得分:2)

目前还没有适用于C ++的GObject Introspection工具。您可以在https://live.gnome.org/GObjectIntrospection/Users找到用户列表。

基于one of GOffice's automake files,GIR名称GOffice为GOffice-0.10,因此您应该期望$(pkg-config --variable=girdir gobject-introspection-1.0)/GOffice-0.10.gir$(pkg-config --variable=typelibdir gobject-introspection-1.0)/GOffice-0.10.typelib,但您的发行版包可能不包含这些文件,在哪种情况下,您可能需要考虑提交错误。

关于如何使用GObject Introspection for Python的文档,您应该查看PyGObject site。它们链接到The Python GTK+ 3 Tutorial,这可以帮助您了解如何使用PyGObject。至于其他语言,文档将根据语言和实现而有所不同。

答案 1 :(得分:0)

gtkmm,glibmm和其他-mm库目前仍然使用gmmproc工具为基于GObject的库生成绑定。这个工具比GObject Introspection早(GI从GTK + 3认为是稳定的),并且需要手动编写带有特殊宏的头文件,工具将使用它来生成C ++源代码。有关详细信息和操作方法,请参阅Wrapping C Libraries with gmmproc

对于使用GObject Introspection的自动C ++绑定生成,我发现只有一个WIPgi-mm

或者有GObject ConsumeSmoke-GObject,它们都可用于通过Qt框架将GObject与C ++集成。

答案 2 :(得分:0)

cppgir是GObject-Introspection C ++绑定包装器生成器(也在here中列出)。

它是轻量级的(直接绑定),可以选择内联使用(仅标头),因此该程序可以直接链接到任何基于GObject的库(GTK,GStreamer等)。

您可以从READMEdocumentation阅读更多信息。