1

我有一个用 Vala 编写的库,它总是可以很好.vapi地为自己生成一个文件,我认为因为它是一个免费的操作,valac但我对此并不积极。我去尝试VAPIGEN_CHECK在我的文件和我configure.ac的关联文件中使用,现在我得到:VAPIGEN_MAKEFILEMakefile.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,我认为这是隐含的。仍在尝试解决其他阻止此问题的问题,但是一旦完成,我将对其进行更新以说明它是否真的重要。

4

1 回答 1

1

要从 Vala 程序生成 VAPI 文件,您只需使用--vapi带有 的选项valac,例如:

valac --vapi my_library_name.vapi my_library.vala

根据您的描述,我认为您正在生成一个 GIR(GObject Introspection Repository)文件valac,然后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 绑定。我快速浏览了一下,没有找到任何东西。

于 2016-06-13T23:01:37.780 回答