对此"你好世界"找到的示例at the Gnome Wiki Vala Tutorial给了我一个警告。
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 :(得分:1)
正如您已经发现的那样,可以在同一系统上安装多个版本的valac。
您可以使用valac-0.30
或valac-0.20
(等)进行显式编译。您的Linux发行版(显然是Ubuntu)有一个包管理从/usr/bin/valac
到其中一个已安装的vala编译器的符号链接。
您所看到的具体警告的说明:
旧版本的glib / gobject(这是Vala使用的基本OOP系统)需要调用g_type_init
才能工作,Vala编译器也会尝试保持代码与旧版本兼容。 / p>
您可以使用--target-glib=2.44
(或您想要支持的任何最低版本的glib)明确禁用此行为。
但是在较新的valac版本中,使用GLIB_CHECK_VERSION宏修复了此警告,即:
#if !GLIB_CHECK_VERSION (2,35,0)
g_type_init ();
#endif
如果glib至少是版本2.35,则此检查可以避免调用g_type_init
。
一般来说,对于C编译器警告:
只有非常简单的Vala程序不会生成C编译器警告,您必须仔细扫描编译器警告的起源(valac或gcc)。通常你只需关心valac输出的警告,而不是你的C编译器(如gcc)的警告。
如果您编写.vapi
文件,其中C编译器的警告更重要并且可以指向vapi文件中的错误,则此规则有一个例外。 (vapi文件用于使C库可以访问Vala)。
答案 1 :(得分:0)
我必须先安装vala,因为valac --version提供了
Vala 0.20.1
我以为我用
安装了所有东西sudo add-apt-repository ppa:vala-team
sudo apt-get install libgee-0.8 vala-0.30 valadoc
但我还需要做
sudo apt-get install valac
获取Vala 0.30.0版本的编译器。一旦我这样做,警告消失了。