2010-06-13 13 views
6

Sto provando a creare collegamenti Python in una libreria di vala usando pygi con l'introspezione di gobject. Tuttavia, ho problemi a generare i file GIR (che sto pianificando di compilare successivamente in file typelib). Secondo la documentazione Valac dovrebbe supportare la generazione di file GIR.Come generare file GIR dal compilatore Vala?

compilando il seguente

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; 

} 

con il comando

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

non crea il file Hello-1.0.gir come ci si aspetterebbe. Come posso generare il file gir?

risposta

10

Per generare quella GIR deve mettere le funzioni da esportare sotto lo stesso spazio dei nomi

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; 

} 

e quindi eseguire il seguente comando.

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

Questo genererà un gir e un file vapi nella directory corrente.

Poi per generare il file libreria dei tipi, si ha la necessità di eseguire

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

assumendo la libreria condivisa è stato compilato per libhello.so

Problemi correlati