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

2024-01-06

我正在尝试使用 pygi 和 gobject introspection 创建到 vala 库的 python 绑定。但是,我在生成 GIR 文件时遇到问题(我计划随后将其编译为 typelib 文件)。根据文档 valac 应该支持生成 GIR 文件。

编译以下内容

你好世界.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,必须将要导出的函数放在同一命名空间下

你好.瓦拉

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

这会在当前目录生成一个girl和一个vape文件。

然后要生成 typelib 文件,需要运行

g-ir-compiler --shared-library=hello Hello-1.0.gir -o Hello-1.0.typelib

假设共享库已编译为libhello.so

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 Vala 编译器生成 GIR 文件? 的相关文章

  • 如何在不阻塞主线程的情况下使用 Qt-Dbus 绑定

    我的目标是使用创建一个库Qt 的 DBus 绑定 我尝试创建一个 Qt 应用程序而不启动QEventLoop 由提供QCoreApplication类 在主线程中 这是一个简约的应用程序示例 使用 QT 4 6 2 版本工作正常 但使用 Q
  • 你能列出函数接收的关键字参数吗?

    我有一个字典 我需要将键 值作为关键字参数传递 例如 d args kw1 value1 kw2 value2 example d args 这工作正常 but如果 d args 字典中存在不被接受的值example函数 它显然死了 比如说
  • 如何使用 C# 或 C++ 读取 COM TypeLib?

    我的公司创建了几个 COM 对象 并且他们在 NET 中愉快地使用它们 但现在 我们的客户想改用Java 我认为使用 JACOB 或 j interop 我不确定其中哪一个 来完成某些任务会很有趣 但生成的代码非常难以管理 所以我想编写一个
  • 在部署时无需 Regsrv32 即可将 TLB 转换为托管 .NET 程序集

    我有一个作为第三方 API 的一部分提供的 TLB 我使用 TLBIMP exe 生成 DLL 程序集包装器 然而 在开发时 该程序集似乎需要使用 regsvr32 注册才能使用 然而 这在开发时不是问题 我在生产中使用托管实例 并且在部署
  • 如何获取Python中函数的调用表达式?

    出于教育目的 我希望能够打印complete当前函数的调用表达式 不一定来自异常处理程序 经过一番研究 我最终得到了这段非常简单的代码 import inspect import linecache def print callexp ar
  • 比较过程的内容,而不是结果

    使用 Ruby 1 9 2 Problem比较两个过程的内容 而不是结果 我了解结果无法测试 因为停止问题但没关系 反正我也不想测试结果 例如 proc x x proc x x gt false doh 这会返回 false 因为过程中的
  • COM->.NET - 无法访问重载方法

    我正在尝试访问 Net 库 图像调整器 来自 COM jscript 我已经尝试过 IDispatch 和类接口生成 以及相关类上的 ClassInterface ClassInterfaceType AutoDual 有一个方法有 3 个
  • Genie 中嵌套泛型类型的语法是什么?

    我想声明一个哈希表string因为它是关键并且array of int因为它的价值 indent 4 init var h new HashTable of string array of int str hash str equal h
  • Python 3 中如何区分实例方法、类方法、静态方法或函数?

    我想区分Python 3中的方法和函数 此外 如果是方法 我想获取相应的类 我目前的解决方案是这样的 import types import inspect def function or method f if inspect ismet
  • 从基类到所有后代遍历类层次结构

    在我正在编写的 iOS 应用程序中 我想遍历类层次结构以列出所有子类的清单 我的意图是使用每个子类类型作为键 viaNSStringForClass 在字典里 我的动机是能够自动发现基类的所有变体 以便我可以调用与该类关联的方法 出于分工的
  • 如何在GtkTreeview中用字符串和pixbuf制作一列?

    我正在使用 Gtk 2 的应用程序中工作 我需要实现一个文件树视图 实际的代码是 public FileTree store new TreeStore 2 typeof string typeof string this change d
  • 从字符串文字推断 Spark 数据类型

    我正在尝试编写一个可以推断 Spark 的 Scala 函数数据类型 https spark apache org docs 1 4 0 api java org apache spark sql types DataType html基于
  • 如何在anjuta项目中包含资源文件

    我正在尝试更新 vala 中的图形项目 将大量代码行移动到 ui 文件中 我想使用模板 可用于 glib 2 38 和 GTK 3 8 类似的东西 我的项目是用 Anjuta 和 autoconf 管理的 In the src目录有 app
  • PHP 回调:类的方法是否有 ::class 的等效项?

    在 PHP 中 可以通过类名解析获取完整的类名 如下所示 Example namespace Name Space class ClassName echo ClassName class Output Name Space ClassNa
  • 使用装饰器进行 Python 日志记录

    这是我们面对装饰器时遇到的第一个例子 但我无法意识到我到底想要什么 一个名为 LOG 的简单装饰器 它应该像这样工作 LOG def f a b 2 c d pass 结果应该是这样的 f 1 pippo 4 paperino luca E
  • 在 python 中通过 gi.repository 使用开罗区域

    我似乎无法让开罗地区在其中工作 使用 gintrospection 例如 from gi repository import cairo reg cairo Region 会给我 Traceback most recent call las
  • 使用 vala 将 uris 插入 Gtk.Clipboard

    我目前正在尝试为我的应用程序实现复制和粘贴 问题是我只能根据文档将纯文本或图像复制到剪贴板Gtk Clipboard https valadoc org gtk 3 0 Gtk Clipboard html https valadoc or
  • 如何检查 Ruby 对象的方法?

    我想知道是否有一个 Ruby 方法调用仅显示由其调用的 Ruby 对象定义的方法 而不是由其祖先类定义的所有方法 这就是methods似乎是这样 methods采用可选的布尔参数 该参数指定是否还列出对象的类及其超类的方法或仅列出对象的单例
  • 我如何将 C++ 与 VALA 混合起来

    我需要用 C 编写跨平台的 GUI 应用程序 但由于 C 的大多数 GUI 库都有点乏味 而且我对 C NET 非常熟悉 我发现使用 GTK 的代码 Vala 代码非常有趣 并且与其他方式相比有点容易 那么我该如何将 VAlA 与 C 混合
  • SQLAlchemy ORM 类/对象的自省

    我正在寻找一种方法来内省 SQLAlchemy ORM 类 实体 以确定实体属性的类型和其他约束 如最大长度 例如 如果我有一个声明性类 class User Base tablename USER TABLE id sa Column s

随机推荐