2013-12-08 25 views

cevap

8

Doğrudan bunu yapmıyorsunuz. valac file1.vala file2.vala çalıştırırsanız, büyük bir dosyada derlenmiş gibi olur.

Yeniden kullanılabilir hale getirmek istiyorsanız, muhtemelen paylaşılan bir kitaplık istersiniz. Bu durumda, bir C başlık dosyası ve VAPI tanımını üretmek için birini derlemek:

valac --vapi file1.vapi -H file1.h --library libfile1.so file1.vala 

ikincisi o zaman bu tüketebilir:

valac --pkg file1 file2.vala 

Bu VAPI dosya yüklenmiş olduğunu varsayalım. Durum böyle değilse, --vapidir kodunu ve file1.vapi'un bulunduğu konumu, muhtemelen .'u geçmeniz gerekir. Benzer şekilde, file1.h'un -X -I/directory/containing ile yeniden karşılaştığı C derleyicisine, muhtemelen -X -I.'u da bildirmeniz gerekir. Son olarak, C bağlayıcıya libfile1.so'un -X -L/directory/containing -X -lfile1 aracılığıyla olduğunu söylemeniz gerekir. Bu küçük bir platforma özgüdür ve AutoMake kullanarak farkı düzeltebilirsiniz, ancak bu biraz daha ilgili. Ragel, AutoMake'i Vala ile nasıl kullanacağınız için her zamanki gibi bir projedir.

4

sadece apmasell tedarik:

main.vala:

extern void cfunction(string text); 

void main() 
{ 
    first f = new first(); 
    f.say_something(f.mytext); 
    cfunction("c text\n"); 
} 

class.vala:

public class first { 

    public string mytext = "yolo\n"; 
    public first() 
    { 
     stdout.printf("text from constructer in first\n"); 
    } 

    public void say_something(string text) 
    { 
     stdout.printf("%s\n", text); 
    } 
} 
sınıflar ve kamu değişkenleri kullanarak birden fazla dosya kullanabilirsiniz

text.c:

Eğer, hatta C kodu

kullanabilirsiniz görebileceğiniz gibi valac class.vala main.vala text.c

:

#include <stdio.h> 

void cfunction(const char *s) 
{ 
    puts("This is C code"); 
    printf("%s\n", s); 
} 

ile derler

İlgili konular