簡體   English   中英

gtk和gtk生成器顯示不同的版本

[英]Gtk and gtk builder show different versions

我正在嘗試使用Gtk和林間空地構建helloworld窗口。 該代碼可以正常編譯,但在運行時它將在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

毫無疑問,根據Gtk版本2.x編譯應用程序時,glade文件是使用Glade 3.x創建的。

如果您已經在計算機上創建了Glade文件,則很有可能同時擁有Gtk 2和Gtk 3的運行時文件和開發人員文件。

如果是這樣,則必須更改編譯指令以鏈接到Gtk3。為此,請檢查pkg-config指令,並檢查其是否顯示gtk + -2.0或gtk + -3.0。 它很可能會說gtk + -2.0,更改為gtk + -3.0。

您可能還沒有安裝gtk3 dev軟件包,如果有,請安裝它們。

Glade XML文件保留了所需的最低gtk版本的引用,此更改可能會“解決”該問題,但是如果您使用僅在gtk 3上可用的小部件,它將無法正常工作。

另一個選擇是安裝Glade 2,但最好使用最新版本的Gtk,因為其他版本已經過時。

還要檢查林間空地菜單, 文件>屬性,然后檢查所需的工具箱版本

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM