introspection - Vala VAPI 和 GObject Introspection 之间有什么关系?

标签 introspection vala pygobject gobject vapi

首先,一些背景信息:我是一名 Python 开发人员,使用 PyGObject 编写了一个中型应用程序,利用 GObject Introspection 来访问 GSettings 等内容。我的一些 Python 对象实际上是 GObject.GObject 的子类,因此我非常广泛地使用 GObject。

最近,某个库引起了我的注意,它在 GObject 中包装了 C 库(gexiv2,由 Shotwell/Vala 使用),但它目前不支持内省(introspection)。我有兴趣向 gexiv2 添加内省(introspection)支持,以便我可以从 Python 访问它,但我什至不知道从哪里开始讨论这个主题。

当我研究内省(introspection)和 VAPI 时,我看到很多文档都提到 VAPI 可以从内省(introspection)注释自动生成......但是如果项目已经有了 VAPI,但没有内省(introspection)呢?是否可以根据 VAPI 自动生成内省(introspection)注释?

谢谢。

最佳答案

VAPI 绑定(bind)不一定与 GObject 内省(introspection)相关。例如,有针对 POSIX、Linux、libudev 和其他绝对不是基于 GObject 的东西的 VAPI 绑定(bind)。没有直接的方法将 VAPI 转换为 GObject 绑定(bind)。​​

但是,如果您有 C 头文件和工作库,那么您通常可以从该库构建 GObject 内省(introspection)文件。对于gexiv2,下载并构建源代码,然后执行:

g-ir-scanner -I gexiv2 gexiv2/gexiv2-{metadata,managed-stream,preview-properties,preview-image,log,startup}.h -n GExiv2 --library libgexiv2.la --pkg gobject-2.0

这将生成一个可以在 Python 中使用的 GIR 绑定(bind) (XML)。

关于introspection - Vala VAPI 和 GObject Introspection 之间有什么关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11197009/

相关文章:

python - 更改 GdkPixbuf (GTK3) 中像素的颜色

python - 如何检查对象是否是命名元组的实例?

perl - 如何在 Perl 中探索一个对象?

python - 函数如何稳定地引用自身?

dbus - 忽略 Vala 中的 DBUS 方法

gtk - 使用构建器内容构建 Vala Gtk 对象

debugging - Lua:获取函数源

gtk - 为什么 Gtk.Widget.set_size_request 和 Gtk.Window.set_default_size 导致具有相同值的不同窗口大小?

集成在 GTK3/PyGObject 中的 Python 网络/tcp 包

python - 如何构建使用 GUI 的程序?