1

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

文档(见上面的链接)说我可以使用 GObject Introspection。所以我开始阅读它。我读了又读,我就是不明白如何使用 GOffice 的任何绑定。我在我的系统上以及 PackageKit 安装的文件列表中查找了 goffice gi-repository/typelib 文件。什么也没找到。如果 goffice 或 goffice-devel 包依赖于 gobject introspection 包,我检查了 PackageKit。也许他们间接依赖,但他们不直接依赖它(否则我会在列表中看到它)。

我试了又试,但找不到可以简单地解释如何使用 GObject 编写的库(例如 GOffice)并将其用于另一种语言(例如 Python)或在我的情况下为 C++ 的资源。当然,我可以直接使用C函数,但重点是我想要一个类似于gtkmm的界面。

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

4

3 回答 3

3

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

基于GOffice 的 automake 文件之一,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 站点。它们链接到Python GTK+ 3 教程,它应该可以帮助您了解如何使用 PyGObject。至于其他语言,文档将根据语言和实现而有所不同。

于 2013-02-20T12:32:24.570 回答
1

gtkmm、glibmm 和其他 -mm 库目前仍在使用 gmmproc 工具为基于 GObject 的库生成绑定。该工具比 GObject Introspection 更早(从 GTK+ 3 开始,GI 被认为是稳定的),并且需要手动编写带有特殊宏的标头,该工具将使用这些宏来生成 C++ 源代码。有关更多详细信息和操作方法,请参阅使用 gmmproc 包装 C 库

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

另外还有GObject ConsumeSmoke-GObject,它们都可以用来通过 Qt 框架将 GObjects 与 C++ 集成。

于 2014-03-25T14:14:11.803 回答
1

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

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

您可以从README文档中阅读更多信息。

于 2019-04-12T09:36:43.660 回答