2013-12-08 39 views

回答

8

你不直接做。如果您運行valac file1.vala file2.vala,就好像您將它們編譯爲一個大文件。

如果您想讓它們可重用,那麼您可能需要一個共享庫。在這種情況下,編譯一個,以產生一個C頭文件和一個VAPI定義:

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

第二個然後可以消耗此:

valac --pkg file1 file2.vala 

這假設VAPI文件已被安裝。如果不是這種情況,則需要通過--vapidirfile1.vapi存在的位置,可能是.。同樣,您需要通知C編譯器關於file1.h-X -I/directory/containing共存的位置,再次可能是-X -I.。最後,您需要通過-X -L/directory/containing -X -lfile1告訴C鏈接器libfile1.so。這是一個特定的平臺,你可以使用AutoMake來平滑差異,儘管這涉及更多一點。 Ragel是如何在Vala中使用AutoMake的常用項目。

4

只是apmasell提供:

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); 
    } 
} 

您可以通過使用類和公共變量使用多個文件

text.c:

#include <stdio.h> 

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

與編譯:valac class.vala main.vala text.c

,你可以看到,你甚至可以用C代碼

相關問題