Import 如何在Vala中导入其他文件?
这个问题几乎说明了一切——我如何才能将Import 如何在Vala中导入其他文件?,import,vala,Import,Vala,这个问题几乎说明了一切——我如何才能将file2.vala导入file1.vala?您不直接导入。如果运行valac file1.vala file2.vala,就好像在一个大文件中编译它们一样 如果您想使它们可重用,那么您可能需要一个共享库。在这种情况下,您可以编译一个以生成C头文件和VAPI定义: valac --vapi file1.vapi -H file1.h --library libfile1.so file1.vala 然后,第二个用户可以使用以下内容: valac --pkg
file2.vala
导入file1.vala
?您不直接导入。如果运行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文件。如果不是这样,则需要传递
--vapidir
和file1.vapi
存在的位置,可能是
。类似地,您需要通知C编译器file1.h
与-X-I/directory/containing
一起位于何处,同样可能是-X-I.
。最后,您需要通过-X-L/directory/containing-X-lfile1告诉C链接器libfile1.so
在哪里。这是一个特定的平台,您可以使用AutoMake消除差异,尽管这有点复杂。Ragel是如何将AutoMake与Vala一起使用的常用项目。仅用于供应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);
}
}
案文c:
#include <stdio.h>
void cfunction(const char *s)
{
puts("This is C code");
printf("%s\n", s);
}
#包括
void c函数(常量字符*s)
{
puts(“这是C代码”);
printf(“%s\n”,s);
}
编译时使用:valac class.vala main.vala text.c
如您所见,您甚至可以使用C代码