LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 729|回复: 2

[请教]编译gtk+-2.0程序时的一个编译错误

[复制链接]
发表于 2005-10-31 11:37:33 | 显示全部楼层 |阅读模式
在学习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;
}

+----------------------------------------------------------------------+
发表于 2005-10-31 12:06:54 | 显示全部楼层
make_menu_item 没有定义
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-31 12:26:09 | 显示全部楼层
晕!

眼睛看花了。

谢了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表