我正在尝试在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忽略这些错误?
发布于 2011-06-18 16:14:41
什么版本的vala?我担心这一定是你的发行版搞砸了。你能粘贴/usr/share/.../gtk+-3.0.deps的内容吗?
还可以尝试使用valac --verbose,这样就可以看到所有的vapis都被加载了。对于每个vapi,查看相对的.deps文件,并检查周围是否有GDK2.0。
发布于 2011-06-27 12:23:21
如果不能访问源代码或构建环境(假设您不仅仅是直接输入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,看看问题是否仍然存在。
https://stackoverflow.com/questions/6392259
复制相似问题