我正在尝试在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
忽略这些错误?
答案 0 :(得分:0)
什么版本的vala?我担心它必须在你的发行版中搞砸了。你能粘贴/ usr / share /.../gtk + -3.0.deps的内容吗?
还尝试使用valac --verbose,以便您可以看到所有正在加载的vapis。对于每个vapi,查看相关的.deps文件并检查是否存在gdk-2.0。
答案 1 :(得分:0)
无法访问您的源代码或构建环境(假设您不仅仅是直接键入valac
命令),很难对此进行故障排除。使用Vala 0.12.1的死简单test.vala,它在我的系统上构建良好。
过去我见过糟糕的Vala环境,因为旧版本的Vala(及其支持文件)潜伏着。我建议完全卸载Vala 0.12.1,然后通过/ usr获取任何残余。一个简单而彻底的方法(虽然耗时)是这样做的:
$ find /usr -name "*vala*"
$ find /usr -name "*.vapi"
删除任何显然不属于另一个包的内容。 (请注意,有些软件包会安装自己的VAPI,比如libgee。)然后重新安装Vala 0.12.1并查看问题是否仍然存在。