首先,一些背景信息:我是一名 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/