|
|
在学习gtk+-2.0的menu时,写了一段程序,编译器(正确地说应该是连接器)老是报错,并且伴有警告,信息如下:
+----------------------------------------------------------------------+
m6.c: In function `main':
m6.c:46: warning: assignment makes pointer from integer without a cast
m6.c:50: warning: assignment makes pointer from integer without a cast
m6.c:54: warning: assignment makes pointer from integer without a cast
/var/tmp//ccMJL1zz.o(.text+0x171): In function `main':
: undefined reference to `make_menu_item'
/var/tmp//ccMJL1zz.o(.text+0x1b7): In function `main':
: undefined reference to `make_menu_item'
/var/tmp//ccMJL1zz.o(.text+0x1fd): In function `main':
: undefined reference to `make_menu_item'
+----------------------------------------------------------------------+
下面这段程序我按照编译的提示改了很多次,但都是徒劳。
+----------------------------------------------------------------------+
item = make_menu_item ("World", G_CALLBACK (cb_say_hello),
(gpointer)"World");
gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
item = make_menu_item ("HuangTao", G_CALLBACK (cb_say_hello),
(gpointer)"HuangTao");
gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
item = make_menu_item ("NOBODY", G_CALLBACK (cb_say_hello),
(gpointer)"NOBODY");
gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+----------------------------------------------------------------------+
希望哪位兄弟能抽空改一改(最好是编译通过,运行正常),谢谢!
最后附上完整的代码:
+----------------------------------------------------------------------+
/* menu 的练习。*/
#include <gtk/gtk.h>
void destroy (GtkWidget *gtkWidget, gpointer data)
{
gtk_main_quit();
}
void cb_say_hello(GtkWidget *gtkWidget, gpointer data)
{
g_print ("%s\n", (char*)data);
}
void cb_quit_command( GtkWidget *widget, gpointer data)
{
destroy (widget, data);
}
int main(int argc, char *argv[])
{
GtkWidget *window;
GtkWidget *box, *box_2;
GtkWidget *btn;
GtkWidget *menu, *item, *opt;
gtk_init( &argc, &argv );
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), "Hello :");
gtk_container_set_border_width (GTK_CONTAINER (window), 5);
box = gtk_vbox_new (TRUE, 0);
box_2 = gtk_hbox_new (FALSE, 0);
/* create a label. */
btn = gtk_label_new ("the pop-up menu:");
gtk_box_pack_start (GTK_BOX (box_2), btn, TRUE, FALSE, 0);
gtk_widget_show (btn);
menu = gtk_menu_new ();
btn = gtk_option_menu_new();
item = make_menu_item ("World", G_CALLBACK (cb_say_hello),
(gpointer)"World");
gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
item = make_menu_item ("HuangTao", G_CALLBACK (cb_say_hello),
(gpointer)"HuangTao");
gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
item = make_menu_item ("NOBODY", G_CALLBACK (cb_say_hello),
(gpointer)"NOBODY");
gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
gtk_option_menu_set_menu (GTK_OPTION_MENU (opt), menu);
gtk_box_pack_start (GTK_BOX (box_2), opt, TRUE, FALSE, 0);
gtk_widget_show (opt);
gtk_widget_show (window);
gtk_main();
return 0;
}
+----------------------------------------------------------------------+ |
|