为 Vala 库生成 Vapi 文件

Generating a Vapi file for a Vala library

我有一个用 Vala 编写的库,它始终可以很好地为自己生成一个 .vapi 文件,我认为是因为它是 valac 的免费操作,但我对此并不乐观那。我去尝试在我的 configure.ac 文件中使用 VAPIGEN_CHECK 并在我的 Makefile.am 中使用关联的 VAPIGEN_MAKEFILE 现在我得到:

error: The type name `GLib.TypeInstance' could not be found

我对应的.gir文件包含:

<field name="parent_instance">
  <type name="GObject.TypeInstance" c:type="GTypeInstance"/>
</field>

所以错误似乎是有道理的,因为我在任何 .vapi 文件中都找不到 GObject.TypeInstance class/struct,但是 GTypeInstance 在 GLib 之一中headers.

如果我已经在 Vala 中编写所有内容,我还应该这样做吗?是否有可能是 Vapi 中缺少此内容?

编辑:可能只是因为我没有推导出 GLib.Object 我认为是隐含的。仍在尝试修复阻止此问题的其他问题,但一旦完成,我将更新此内容以说明它是否真的重要。

要从 Vala 程序生成 VAPI 文件,您应该简单地使用 --vapi 选项和 valac,例如:

valac --vapi my_library_name.vapi my_library.vala

根据您的描述,我认为您正在使用 valac 生成 GIR(GObject Introspection Repository)文件,然后使用 vapigen 创建 VAPI 文件。 vapigen 是 Vala 的一部分,在 Vala 源代码中维护,但它是一个生成 VAPI 文件以绑定到非 Vala 项目的工具。如果非 Vala 项目发布了一个 GIR 文件,那么绑定就非常容易了。

当使用 vapigen 时,您需要提供它使用的包,因此您需要检查您是否包含正确的 pkg-config 标志,例如:

vapigen --pkg glib-2.0 --pkg gobject-2.0 my_library.gir

另一种可能是Vala中没有绑定GTypeInstance。我快速浏览了一下,但没有找到任何东西。