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

问题描述 投票:2回答:3

我决定在项目中使用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)

c++ linux gnome gobject gobject-introspection
3个回答
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,但你的发行包可能不包括那些文件,在这种情况下你可能想考虑提交一个bug。

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


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框架将GObjects与C ++集成在一起。


0
投票

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

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

您可以从READMEdocumentation了解更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.