如何在Vala中导入其他文件?

时间:2013-12-08 19:32:29

标签: import vala

这个问题几乎说明了 - 如何将file2.vala导入file1.vala

2 个答案:

答案 0 :(得分: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.。最后,您需要通过libfile1.so告诉C链接器-X -L/directory/containing -X -lfile1的位置。这是一个特定的平台,您可以使用AutoMake平滑差异,尽管这涉及更多。 Ragel是如何在Vala中使用AutoMake的常用项目。

答案 1 :(得分:5)

只是提供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);
}

编译:{{1​​}}

如您所见,您甚至可以使用C代码