【发布时间】:2018-05-18 16:19:18
【问题描述】:
我有两个文件,client.vala 和 lib.vapi。
VAPI 定义了一个类(通常与 C 代码对话):
class Toplevel.Sub.CClass
{
public uint i;
}
而client.vala 使用类:
class Toplevel.Sub.UserClass
{
public Toplevel.Sub.CClass c_class;
}
int main()
{
var cls = new Toplevel.Sub.UserClass();
cls.c_class.i = 0;
return 0;
}
当我尝试编译程序时,我得到一个错误:
$ valac client.vala lib.vapi
/tmp/bug/client.vala.c:7:20: fatal error: client.h: No such file or directory
compilation terminated.
error: cc exited with status 256
Compilation failed: 1 error(s), 0 warning(s)
编译器似乎想要为client.vala 中的函数生成一个头文件。
这是一个错误还是我遗漏了什么?
【问题讨论】:
-
你想用那个 vapi 文件实现什么?您想从 Vala 代码中访问其他 C 库吗? Vapi 文件仅用作
valac读取的占位符,对 C 编译器没有用处,因为它未翻译成 C 代码。因此,C 编译器不知道class Toplevel.Sub.CClass。因此,您还应该将该库附带的 C 头文件提供给编译器,例如,将其放入您的构建目录中。
标签: header-files vala vapi