2010-06-13 39 views
6

Tôi đang cố gắng tạo ra các ràng buộc python vào một thư viện vala bằng cách sử dụng pygi với nội suy gobject. Tuy nhiên, tôi gặp sự cố khi tạo các tệp GIR (rằng tôi đang lập kế hoạch biên dịch thành các tệp đánh máy sau này). Theo valac tài liệu nên hỗ trợ tạo các tệp GIR.Cách tạo tệp GIR từ trình biên dịch Vala?

Biên soạn sau

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; 

} 

với lệnh

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

không tạo ra các tập tin Hello-1.0.gir như người ta mong đợi. Làm thế nào tôi có thể tạo tệp gir?

Trả lời

10

Để tạo ra một Gir phải đặt các chức năng được xuất khẩu dưới cùng namespace

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; 

} 

và sau đó chạy lệnh sau.

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

Điều này sẽ tạo tệp gir và vapi trong thư mục hiện tại.

Sau đó, để tạo ra các tập tin typelib, người ta cần để chạy

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

giả sử thư viện chia sẻ đã được biên soạn để libhello.so

Các vấn đề liên quan