2015-11-02 83 views
1

编译这个“你好世界”的例子发现at the Gnome Wiki Vala Tutorial给我一个警告。瓦拉'你好世界'的例子给出关于g_type_init的警告

class Demo.HelloWorld : GLib.Object { 

    public static int main(string[] args) { 

     stdout.printf("Hello, World\n"); 

     return 0; 
    } 
} 



/home/scooter3/code/vala/hello_world.vala.c:55:2: warning: ‘g_type_init’ is deprecated (declared at /usr/include/glib-2.0/gobject/gtype.h:667) [-Wdeprecated-declarations] 
    g_type_init(); 

我想要修改程序或安装一些其他版本的lib以摆脱警告。

回答

0

我一定是以前安装VALA,如华劣克--version给

瓦拉0.20.1

我想我已经安装了一切与

sudo add-apt-repository ppa:vala-team 
sudo apt-get install libgee-0.8 vala-0.30 valadoc 

,但我需要也做

命令和apt-get安装华劣克

得到瓦拉0.30.0版本的编译器。一旦我做到了,警告就消失了。

1

正如您已经发现的,可以在同一个系统上安装多个版本的valac。

您可以使用valac-0.30valac-0.20(等)进行明确编译。你的Linux发行版(显然是Ubuntu)有一个包管理从/usr/bin/valac到其中一个安装的vala编译器的符号链接。

解释你看到具体的警告:巧舌如簧/ GObject的的

旧版本(这是由瓦拉使用的基本OOP系统),以便在需要这个电话转给g_type_init工作和瓦拉编译器试图保持该代码也与旧版本兼容。

可以明确禁用与--target-glib=2.44(或要支持巧舌如簧的任何最低版本)这种行为。

然而,在新的华劣克版本的这个警告是通过使用GLIB_CHECK_VERSION宏观固定的,即:

#if !GLIB_CHECK_VERSION (2,35,0) 
     g_type_init(); 
#endif 

这种检查避免调用g_type_init如果油嘴版本至少2.35。

对于C编译器一般警告:

只有很琐碎瓦拉程序不生成C编译器警告,你要仔细扫描的编译器警告的原籍(华劣克或GCC)。通常你只需要关心valac输出的警告,而不是你的C编译器(比如gcc)输出的警告。

如果您编写.vapi文件,C编译器的警告更重要,并且可以指向vapi文件中的错误,则此规则有个例外。 (vapi文件用于使C库可访问Vala)。