【问题标题】:VAPI problems with GTK+ 3GTK+ 3 的 VAPI 问题
【发布时间】:2011-06-17 21:57:14
【问题描述】:

我正在尝试在 ArchLinux 上编译一些 Vala,当我尝试包含包 gtk+-3.0 时,似乎也包含了 GDK 和 GTK+ 2.0; valac --pkg gtk+-3.0 test.vala 给出以下错误:

gdk-2.0.vapi:8.3-8.28: error: `Gdk.Selection' already contains a definition for `convert'
    public static void convert (Gdk.Window requestor, Gdk.Atom selection,     Gdk.Atom target, uint32 time_);
    ^^^^^^^^^^^^^^^^^^^^^^^^^^
gdk-3.0.vapi:8.3-8.28: note: previous definition of `convert' was here
    public static void convert (Gdk.Window requestor, Gdk.Atom selection, Gdk.Atom target, uint32 time_);
    ^^^^^^^^^^^^^^^^^^^^^^^^^^
gdk-2.0.vapi:10.3-10.44: error: `Gdk.Selection' already contains a definition for `owner_get'
    public static unowned Gdk.Window owner_get (Gdk.Atom selection);
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
gdk-3.0.vapi:10.3-10.44: note: previous definition of `owner_get' was here
    public static unowned Gdk.Window owner_get (Gdk.Atom selection);
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
--snip--
Compilation failed: 942 error(s), 0 warning(s)

有没有办法指定不包括gtk+-2.0 或让valac 忽略这些错误?

【问题讨论】:

    标签: gnome gtk3 vala gnome-3 vapi


    【解决方案1】:

    如果无法访问您的源代码或构建环境(假设您不只是直接输入valac 命令),则很难解决此问题。使用非常简单的 test.vala 和 Vala 0.12.1,它在我的系统上构建良好。

    在过去,由于旧版本的 Vala(及其支持文件)潜伏在周围,我看到过糟糕的 Vala 环境。我建议完全卸载 Vala 0.12.1,然后通过 /usr 寻找任何残留物。一个简单而彻底的方法(虽然耗时)是这样做:

    $ find /usr -name "*vala*"
    $ find /usr -name "*.vapi"
    

    删除任何明显不属于另一个包的内容。 (注意有些包会安装自己的 VAPI,比如 libgee。)然后重新安装 Vala 0.12.1,看看问题是否仍然存在。

    【讨论】:

    • 当我尝试这个时,vala 在 /usr/share/vala 中留下了一些 vapis(而不是 /u/s/vala-0.12,它被删除了)。我删除了这些并重新安装了 vala,但问题仍然存在。我还尝试了 Git 0.14 版的 vala,但它仍然可以。啊。
    • 我最近将一个项目从 GTK+2 过渡到 GTK+3,并且在整个过程中遇到了类似的问题。原因:我们项目依赖的其他一些库(如libunique和WebKit)依赖于GTK+2,导致冲突。浏览你的应用程序依赖的所有包,看看它们是否依赖于 GTK+2。 (最简单的方法是检查他们的 .deps 文件,即 unique-1.0.deps,它位于他们的 VAPI 旁边。)然后,您必须检查是否有任何 那些 包依赖于 GTK+2,并且很快。我猜你会在那里找到罪魁祸首。
    【解决方案2】:

    什么版本的vala?我担心它一定是你的发行版搞砸了。可以把/usr/share/.../gtk+-3.0.deps的内容贴一下吗?

    还可以尝试使用 valac --verbose 以查看所有正在加载的 vapi。对于每个 vapi,查看相关的 .deps 文件并检查周围是否存在 gdk-2.0。

    【讨论】:

    • 这是 Vala 0.12.1。 /usr/share/vala-0.12/vapi/gtk+-3.0.deps 中没有任何异常:gio-2.0 atk cairo gdk-pixbuf-2.0 gdk-3.0 pango
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多