我创建了一个库,用于链接我正在处理的前端。图书馆还不完整,但已经足够开始测试我所拥有的。
到目前为止,这是前端唯一的功能:
int main(string[] args)
{
try
{
MCTH.init_lists();
MCTH.init_names();
} catch (FileError e) {
stderr.printf("Error: %s\n", e.message);
}
// no errors
return 0;
}
据我所知,它是库的有效语法(错误和方法在vapi中定义)。但是,当我去构建时,我在C编译器中遇到错误:
valac src/main.vala -o bin/mctradehelp --pkg mctradehelp --pkg libxml-2.0
/tmp/ccdIz2Sn.o: In function `_vala_main':
main.vala.c:(.text+0x27): undefined reference to `mcth_init_lists'
main.vala.c:(.text+0x3f): undefined reference to `file_error_quark'
main.vala.c:(.text+0x11a): undefined reference to `mcth_init_names'
collect2: error: ld returned 1 exit status
error: cc exited with status 256
vapi位于/usr/share/vala/vapi
,标题位于/usr/local/include
,.so
位于/usr/local/lib
。
我是否传递了错误的旗帜,或者是不是在正确的地方?
答案 0 :(得分:2)
Vala通过使用匹配的pkg-config数据(在本例中为/usr/local/lib/pkgconfig/mctradehelp.pc
)为每个包传递编译和链接参数到C编译器。如果该文件不存在,则它不会传递任何args。您可以使用-X -lmctradehelp
手动传递它们。