Пример ваф проекта с вала - PullRequest
       26

Пример ваф проекта с вала

1 голос
/ 24 февраля 2012

хороший пример ваф вала:

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

и показывает библиотеку и приложение на вале. К сожалению, программа в этом примере фактически не использует библиотеку (которая определяет метод "привет"). Когда я пытаюсь вызвать его из программы, я получаю ошибки компиляции.

Я не могу изменить скрипт для правильной загрузки библиотеки. В чем тут подвох? Спасибо.

Я добавил следующую строку в программе:

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

1 Ответ

1 голос
/ 07 марта 2012

Метод hello является не статическим методом, а методом экземпляра, поэтому вам необходимо сначала создать экземпляр My.Lib, а затем вызвать метод.

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

Если это не помогло, попробуйте добавить using My; в hello-gtk.vala.

...