如何从 Vala 编译器生成 GIR 文件?
Posted
技术标签:
【中文标题】如何从 Vala 编译器生成 GIR 文件?【英文标题】:How to generate GIR files from the Vala compiler? 【发布时间】:2011-03-03 02:44:54 【问题描述】:我正在尝试使用带有 gobject 内省的 pygi 创建与 vala 库的 python 绑定。但是,我无法生成 GIR 文件(我计划随后将其编译为 typelib 文件)。根据文档 valac 应该支持生成 GIR 文件。
编译如下
helloworld.vala
public struct Point
public double x;
public double y;
public class Person
public int age = 32;
public Person(int age)
this.age = age;
public int main()
var p = Point() x=0.0, y=0.1 ;
stdout.printf("%f %f\n", p.x, p.y);
var per = new Person(22);
stdout.printf("%d\n", per.age);
return 0;
用命令
valac helloworld.vala --gir=Hello-1.0.gir
没有像预期的那样创建Hello-1.0.gir
文件。如何生成 gir 文件?
【问题讨论】:
【参考方案1】:要生成 GIR,必须将要导出的函数放在同一个命名空间下
hello.vala
namespace Hello
public struct Point
public double x;
public double y;
public class Person
public int age = 32;
public Person(int age)
this.age = age;
public int main()
var p = Hello.Point() x=0.0, y=0.1 ;
stdout.printf("%f %f\n", p.x, p.y);
var per = new Hello.Person(22);
stdout.printf("%d\n", per.age);
return 0;
然后运行以下命令。
valac hello.vala --gir=Hello-1.0.gir --library Hello-1.0
这将在当前目录中生成一个 gir 和一个 vapi 文件。
然后要生成typelib文件,需要运行
g-ir-compiler --shared-library=hello Hello-1.0.gir -o Hello-1.0.typelib
假设共享库已经编译为libhello.so
【讨论】:
以上是关于如何从 Vala 编译器生成 GIR 文件?的主要内容,如果未能解决你的问题,请参考以下文章