【问题标题】:Using C++ bindings with GObject Introspection将 C++ 绑定与 GObject Introspection 结合使用
【发布时间】:2013-02-05 10:00:55
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    目前没有用于 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。至于其他语言,文档会因语言和实现而异。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

          猜你喜欢
          • 2016-12-12
          • 1970-01-01
          • 2018-10-03
          • 2012-06-27
          • 2014-11-13
          • 2011-10-15
          • 1970-01-01
          • 2023-04-02
          • 2021-11-18
          相关资源
          最近更新 更多