缺少gtk_menu_popup_at_pointer()

时间:2017-01-16 19:57:40

标签: gtk glib vala vapi

我正在Vala中编写一个使用Gtk.Menu的Gtk程序。
单击鼠标右键时,我需要使用Gtk.Menu.popup_at_pointer()来显示菜单。

编译时(使用--pkg gtk+-3.0),GCC给出了一个错误: warning: implicit declaration of function ‘gtk_menu_popup_at_pointer’ [-Wimplicit-function-declaration]

该方法存在于/usr/share/vala-0.34/vapi/gtk+-3.0.vapi中,但在/usr/include/gtk-3.0/gtk/gtkmenu.h中缺失。

以下是我系统上相关软件包的版本:

$ dpkg -s libgtk-3-dev | grep '^Version:'       
Version: 3.18.9-1ubuntu3.1
$ dpkg -s valac | grep '^Version:'
Version: 0.34.4-0ubuntu1~16.04~valateam1
$ dpkg -s libglib2.0-0 | grep '^Version:'
Version: 2.48.2-0elementary0.4.1

我该怎么做才能使用这种方法?

1 个答案:

答案 0 :(得分:1)

您的GTK +版本太旧了。

如果您查看该功能的GTK +文档,您可以看到它是在GTK + 3.22中引入的:https://developer.gnome.org/gtk3/stable/GtkMenu.html#gtk-menu-popup-at-pointer,而您只安装了3.18。

另请注意,该方法也被声明为不稳定,这意味着将来它可能会以破坏您的应用程序的方式发生变化,因此您现在最好还是找不到替代解决方案。