7

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 ファイルを生成するにはどうすればよいですか?

4

1 に答える 1

12

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

これにより、現在のディレクトリに gir と vapi ファイルが生成されます。

次に、typelib ファイルを生成するには、実行する必要があります。

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

共有ライブラリがコンパイルされていると仮定しますlibhello.so

于 2010-06-13T23:53:39.727 に答える