У меня есть программа, которая таинственным образом вылетает при вызове gtk_box_pack_start () для упаковки строки меню. Я следовал за учебником здесь http://zetcode.com/gui/gtk2/menusandtoolbars/.
Github: https://github.com/Taisho/c-gstreamer-audio-player
файл: client / client.c
Вот только соответствующий код:
void init_menus(vbox) {
GtkWidget *daemon_menu = gtk_menu_new (); /* Don't need to show menus */
GtkWidget *connect_item = gtk_menu_item_new_with_label ("Connect");
GtkWidget *preferences_item = gtk_menu_item_new_with_label ("Preferences");
gtk_menu_append (GTK_MENU (daemon_menu), connect_item);
gtk_menu_append (GTK_MENU (daemon_menu), preferences_item);
gtk_widget_show (connect_item);
gtk_widget_show (preferences_item);
GtkWidget *menu_bar = gtk_menu_bar_new ();
gtk_box_pack_start(GTK_BOX(vbox), menu_bar, FALSE,FALSE,0); //<-- segmentation fault here
gtk_widget_show (menu_bar);
GtkWidget *file_item = gtk_menu_item_new_with_label ("File");
gtk_widget_show (file_item);
}
init_menus () вызывается из main () с передачей обычного vbox
int main (int argc, char **argv) {
...
gtk_init(&argc, &argv);
...
vbox = gtk_vbox_new (FALSE, 0);
...
init_menus(vbox);
}