gpt4 book ai didi

linux - 使用 vala 的示例 waf 项目

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:08:57 26 4
gpt4 key购买 nike

这里有一个很好的 waf vala 示例:

https://code.launchpad.net/~asabil/vala/vala-project-template.waf

它在 vala 中显示了一个库和一个应用程序。不幸的是,这个例子中的程序实际上并没有使用库(它定义了方法“hello”)。当我尝试从程序中调用它时,出现编译错误。

我无法修改 wscript 以正确加载库。这里有什么诀窍?谢谢。

我在程序中添加的是这一行:

My.Lib.hello();

但它不会编译:

Waf: Entering directory `/home/lzap/work/shellmail/TEST/vala-template/_build_'
[1/6] valac: src/hello-gtk.vala -> _build_/default/src/hello-gtk.c
../src/hello-gtk.vala:16.9-16.10: error: The name `My' does not exist in the context of `Sample.create_widgets._lambda0_'
Waf: Leaving directory `/home/lzap/work/shellmail/TEST/vala-template/_build_'
Build failed: -> task failed (err #1):
{task: valac_task hello-gtk.vala -> hello-gtk.c}

我想我需要更改程序 wscript:

#!/usr/bin/env python
def build(bld):
prog = bld(features='cc cprogram')
# symbolic name used to reference this object
prog.name = 'hello-gtk.program'
# name of the resulting program
prog.target = 'hello-gtk'
prog.source = 'hello-gtk.vala'
# libraries to link against
prog.uselib = 'GTK+'
# Vala packages to use
prog.packages = 'gtk+-2.0'
# Extra vapi dirs
#prog.vapi_dirs = '../my_lib'
# Enable threading
#prog.threading = True

最佳答案

hello方法不是静态方法,而是实例方法,所以需要先创建一个My.Lib实例,然后再调用该方法。

var obj = new My.Lib();
obj.hello();

如果仍然失败,请尝试在 hello-gtk.vala 上添加 using My;

关于linux - 使用 vala 的示例 waf 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9422104/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com