为Vala库生成Vapi文件

时间:2016-06-13 19:49:25

标签: vala vapi

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

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

我对应的.gir文件包含:

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

因此,错误似乎有意义,因为我无法在任何GObject.TypeInstance文件中找到.vapi类/结构,但GTypeInstance位于其中一个GLib标题中。

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

编辑:可能只是因为我没有得出GLib.Object,我认为这是隐含的。仍然试图修复阻止这种情况的其他事情但是一旦完成,我会更新它以说明它是否真的重要。

1 个答案:

答案 0 :(得分:1)

要从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没有绑定。我快速浏览了一下,但我找不到任何东西。