gpt4 book ai didi

introspection - 如何从 Vala 编译器生成 GIR 文件?

转载 作者:行者123 更新时间:2023-12-03 07:28:55 24 4
gpt4 key购买 nike

我正在尝试使用带有 gobject 内省(introspection)的 pygi 创建与 vala 库的 python 绑定(bind)。但是,我无法生成 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 文件?

最佳答案

要生成 GIR,必须将要导出的函数放在同一命名空间下

你好.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

关于introspection - 如何从 Vala 编译器生成 GIR 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3030566/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com