2010-06-13 6 views
6

J'essaye de créer des liaisons de python à une bibliothèque de vala utilisant pygi avec l'introspection de gobject. Cependant, j'ai du mal à générer les fichiers GIR (que j'ai l'intention de compiler en fichiers typelib par la suite). Selon la documentation, valac devrait supporter la génération de fichiers GIR.Comment générer des fichiers GIR à partir du compilateur Vala?

Compiler les éléments suivants

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; 

} 

avec la commande

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

ne crée pas le fichier Hello-1.0.gir comme on pouvait s'y attendre. Comment puis-je générer le fichier gir?

Répondre

10

Pour générer une RGI doit mettre les fonctions à exporter sous le même espace de noms

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; 

} 

puis exécutez la commande suivante.

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

Cela générera un fichier gir et un fichier vapi dans le répertoire courant.

ensuite pour générer le fichier typelib, il faut exécuter

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

en supposant que la bibliothèque partagée a été compilé pour libhello.so

Questions connexes