我開始使用Gtk +,我正在學習如何製作第一個應用程序,但是當我嘗試運行可執行文件時,出現此錯誤:Gtk-Critical **:gtk_widget_show assertion GTK_IS_WIDGET(WIDGET)
Gtk-Critical **: gtk_widget_show assertion GTK_IS_WIDGET(WIDGET)
我可以在谷歌看到很多人有同樣的錯誤,但我不能看到如何解決這個問題的答覆..
我的C代碼:
#include <stdlib.h>
#include <gtk/gtk.h>
GtkBuilder *builder;
GtkWidget *app;
G_MODULE_EXPORT
void on_app_destroy (void)
{
gtk_main_quit();
}
G_MODULE_EXPORT
void on_menu_quit_activate (void)
{
gtk_main_quit();
exit(EXIT_SUCCESS);
}
int main (int argc, char *argv[])
{
/* Initialize GTK+ */
g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING, (GLogFunc) gtk_false, NULL);
gtk_init (&argc, &argv);
g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING, g_log_default_handler, NULL);
builder = gtk_builder_new();
gtk_builder_add_from_file (builder, "tut.glade", NULL);
app = GTK_WIDGET (gtk_builder_get_object (builder, "app"));
gtk_builder_connect_signals (builder, NULL);
g_object_unref (G_OBJECT (builder));
/* Enter the main loop */
gtk_widget_show (app);
gtk_main();
return 0;
}
高興文件:
<?xml version="1.0"?>
<glade-interface>
<!-- interface-requires gtk+ 2.16 -->
<!-- interface-naming-policy project-wide -->
<widget class="GtkWindow" id="window1">
<child>
<widget class="GtkFixed" id="fixed1">
<property name="visible">True</property>
<child>
<widget class="GtkButton" id="button1">
<property name="label" translatable="yes">button</property>
<property name="width_request">113</property>
<property name="height_request">42</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
</widget>
<packing>
<property name="x">149</property>
<property name="y">69</property>
</packing>
</child>
</widget>
</child>
</widget>
<widget class="GtkWindow" id="window2">
<child>
<placeholder/>
</child>
</widget>
</glade-interface>
編譯選項:
`pkg-config --cflags --libs gtk+-2.0` -export-dynamic
連接器設置:
-export-dynamic
我的IDE:代碼::塊,編譯器:GNUC C編譯器
如何解決這一問題?提前致謝。
Thaanks很多!祝你今天愉快 :) – Jack