Gtk 和 gtk builder 显示不同的版本
Gtk and gtk builder show different versions
我正在尝试使用 Gtk 和 glade 构建一个 helloworld window。代码编译正常,但在运行时它在 gtk_builder_add_from_file 上失败。奇怪的是,错误报告的当前 gtk 版本与我使用 gtk_get_major_version/gtk_get_minor_version.
获得的版本不同
GtkBuilder *builder;
GtkWidget *window;
GError *err = NULL;
gtk_init(NULL,NULL);
printf("maj %d, min %d\n",gtk_get_major_version (),gtk_get_minor_version ());
builder = gtk_builder_new();
gtk_builder_add_from_file (builder, "/path/to/ui.glade", &err);
if (err != NULL)
{
printf ("%s\n", err->message);
g_error_free (err);
}
window = GTK_WIDGET(gtk_builder_get_object(builder, "mywin"));
gtk_widget_show(window);
g_object_unref(builder);
gtk_main();
...
标准输出:
maj 3, min 2
/path/to/ui.glade: required gtk+ version 3.2, current version is 2.24
毫无疑问,glade 文件是使用 Glade 3.x 创建的,而您的应用程序是针对 Gtk 版本 2.x 编译的。
如果您已经在计算机上创建了 glade 文件,那么您可能同时拥有 Gtk 2 和 Gtk 3 的运行时文件和开发人员文件。
如果是这样,那么您必须针对 Gtk 3 将编译指令更改为 link。为此,请检查您的 pkg-config
指令并检查它是 gtk+-2.0 还是 gtk+-3.0。它很可能会说 gtk+-2.0,更改为 gtk+-3.0.
也有可能是您没有安装 gtk3 开发包,如果是,请安装它们。
Glade XML 文件保留对所需的最低 gtk 版本的引用,更改可能 "solve" 问题,但如果您使用仅在 gtk 3 上可用的小部件,它将不起作用。
另一种选择是安装 Glade 2,但最好使用最新的 Gtk 版本,因为其他版本都比较旧。
同时检查您的 glade 菜单,文件 > 属性 并检查所需的工具包版本。
我正在尝试使用 Gtk 和 glade 构建一个 helloworld window。代码编译正常,但在运行时它在 gtk_builder_add_from_file 上失败。奇怪的是,错误报告的当前 gtk 版本与我使用 gtk_get_major_version/gtk_get_minor_version.
获得的版本不同GtkBuilder *builder;
GtkWidget *window;
GError *err = NULL;
gtk_init(NULL,NULL);
printf("maj %d, min %d\n",gtk_get_major_version (),gtk_get_minor_version ());
builder = gtk_builder_new();
gtk_builder_add_from_file (builder, "/path/to/ui.glade", &err);
if (err != NULL)
{
printf ("%s\n", err->message);
g_error_free (err);
}
window = GTK_WIDGET(gtk_builder_get_object(builder, "mywin"));
gtk_widget_show(window);
g_object_unref(builder);
gtk_main();
...
标准输出:
maj 3, min 2
/path/to/ui.glade: required gtk+ version 3.2, current version is 2.24
毫无疑问,glade 文件是使用 Glade 3.x 创建的,而您的应用程序是针对 Gtk 版本 2.x 编译的。
如果您已经在计算机上创建了 glade 文件,那么您可能同时拥有 Gtk 2 和 Gtk 3 的运行时文件和开发人员文件。
如果是这样,那么您必须针对 Gtk 3 将编译指令更改为 link。为此,请检查您的 pkg-config
指令并检查它是 gtk+-2.0 还是 gtk+-3.0。它很可能会说 gtk+-2.0,更改为 gtk+-3.0.
也有可能是您没有安装 gtk3 开发包,如果是,请安装它们。
Glade XML 文件保留对所需的最低 gtk 版本的引用,更改可能 "solve" 问题,但如果您使用仅在 gtk 3 上可用的小部件,它将不起作用。
另一种选择是安装 Glade 2,但最好使用最新的 Gtk 版本,因为其他版本都比较旧。
同时检查您的 glade 菜单,文件 > 属性 并检查所需的工具包版本。