为 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。我快速浏览了一下,但没有找到任何东西。
我有一个用 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。我快速浏览了一下,但没有找到任何东西。