2012-02-23 4 views
1

есть хороший пример WAF Вала здесь:Пример WAF проект с Валом

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

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

Я не могу изменить 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 

ответ

1

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

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

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

+0

Ну, спасибо, что попробовали. Но метод определяется как статический. Проблема другая, Мой не может быть найден. – lzap

+0

Мы говорим о том же файле? http://bazaar.launchpad.net/~asabil/vala/vala-project-template.waf/view/head:/my_lib/my-lib.vala Метод определен внутри класса без 'static' ключевое слово. – eagleoneraptor

+0

А я уже удалил это из своего проекта. В любом случае, я вернулся к Autotools. Благодарю. – lzap