2010-06-13 11 views
6

Próbuję utworzyć wiązania Pythona do biblioteki Vala za pomocą pygi z introspekcji gobject. Mam jednak problem z generowaniem plików GIR (które zamierzam następnie skompilować do plików typelib). Zgodnie z dokumentacją Valac powinien wspierać generowanie plików GIR.Jak wygenerować pliki GIR z kompilatora Vala?

Kompilacja następujące

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; 

} 

z poleceniem

valac helloworld.vala --gir=Hello-1.0.gir 

nie tworzy plik Hello-1.0.gir jak można by oczekiwać. Jak mogę wygenerować plik gir?

Odpowiedz

10

Aby wygenerować jeden GIR musi umieścić funkcje mają być wywożone w ramach tej samej przestrzeni nazw

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; 

} 

a następnie uruchom następujące polecenie.

valac hello.vala --gir=Hello-1.0.gir --library Hello-1.0 

Spowoduje to wygenerowanie pliku gir i pliku vapi w bieżącym katalogu.

Następnie, aby wygenerować plik TypeLib, trzeba uruchomić

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

zakładając wspólna biblioteka został skompilowany do libhello.so