2

我正在尝试在 ArchLinux 上编译一些 Vala,当我尝试包含 packagegtk+-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.0valac忽略这些错误?

4

2 回答 2

0

什么版本的瓦拉?我担心它一定是你的发行版搞砸了。你能粘贴/usr/share/.../gtk+-3.0.deps的内容吗?

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

于 2011-06-18T08:14:40.887 回答
0

如果无法访问您的源代码或构建环境(假设您不只是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,看看问题是否仍然存在。

于 2011-06-27T04:23:20.830 回答