【问题标题】:Vala 'hello world' example gives warning about g_type_initVala 'hello world' 示例给出有关 g_type_init 的警告
【发布时间】:2015-11-02 04:58:42
【问题描述】:

编译这个找到at the Gnome Wiki Vala Tutorial 的“hello world”示例会给我一个警告。

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 ();

我想修改程序或安装其他版本的 a lib 以消除警告。

【问题讨论】:

    标签: compiler-warnings glib vala


    【解决方案1】:

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

    您可以使用valac-0.30valac-0.20(等)显式编译。您的 Linux 发行版(显然是 Ubuntu)有一个软件包,用于管理从 /usr/bin/valac 到已安装的 vala 编译器之一的符号链接。

    您看到的具体警告的解释:

    旧版本的 glib / gobject(这是 Vala 使用的基本 OOP 系统)需要调用 g_type_init 才能工作,并且 Vala 编译器也试图保持代码与旧版本兼容。

    您可以使用 --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 文件用于使 Vala 可以访问 C 库)。

    【讨论】:

      【解决方案2】:

      我必须以前安装过 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 版本的编译器。一旦我这样做了,警告就消失了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-16
        • 2012-07-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-31
        相关资源
        最近更新 更多