免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234下一页
最近访问板块 发新帖
查看: 6177 | 回复: 36
打印 上一主题 下一主题

[C] GTK+2.0编程范例上的一个例子,编译不过 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-07-26 22:18 |只看该作者 |倒序浏览
  1. #include <gtk/gtk.h>

  2. void on_menu_activate(GtkMenuItem *menu, gpointer data);
  3. static GtkItemFactoryEntry menu_items[] = {
  4.         {"/文件(_F)",NULL,NULL,0,"<Branch>"},
  5.         {"/文件(_F)/新建",NULL,on_menu_activate,0,"<StockItem>",GTK_STOCK_NEW},
  6.         {"/文件(_F)/-",NULL,NULL,0,"<Separator>"},
  7.         {"/文件(_F)/退出",NULL,on_menu_activate,"退出","<StockItem>",GTK_STOCK_QUIT},
  8.         {"/编辑(_E)",NULL,NULL,0,"<Branch>"},
  9.         {"/编辑(_E)/复制",NULL,on_menu_activate,"复制","<StockItem>",GTK_STOCK_COPY},
  10.         {"/帮助(_H)",NULL,NULL,0,"<Branck>"},
  11.         {"/帮助(_H)/关于",NULL,on_menu_activate,"关于","<StockItem>",GTK_STOCK_ABOUT}
  12. };


  13. int main ( int argc, char *argv[] )
  14. {
  15.         GtkWidget *window;
  16.         GtkWidget *box;
  17.         GtkWidget *menubar;
  18.         GtkAccelGroup *accel_group;
  19.         GtkItemFactory *item_factory;
  20.         gint items_count = 8;

  21.         gtk_init(&argc, &argv);

  22.         window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  23.         g_signal_connect(G_OBJECT(window),"delete_event",G_CALLBACK(gtk_main_quit),
  24.                         NULL);
  25.         gtk_window_set_title(GTK_WINDOW(window), "添加菜单的快捷方式");

  26.         accel_group = gtk_accel_group_new();
  27.         gtk_window_add_accel_group(GTK_WINDOW(window), accel_group);

  28.         box = gtk_vbox_new(FALSE, 0);
  29.         gtk_container_add(GTK_CONTAINER(window), box);

  30.         item_factory = gtk_item_factory_new(GTK_TYPE_MENU_BAR,"<main>",accel_group);
  31.         gtk_item_factory_create_items(item_factory, items_count, menu_items, NULL);
  32.         menubar = gtk_item_factory_get_widget(item_factory, "<main>");

  33.         gtk_box_pack_start(GTK_BOX(box), menubar, FALSE, FALSE, 0);

  34.         gtk_widget_show_all(window);

  35.         gtk_main();
  36.         return 0;
  37. }
复制代码
编译出现的错误如下:
  1. $ make
  2. gcc itemfact.c -o itemfact `pkg-config --cflags --libs gtk+-2.0`
  3. itemfact.c:8:2: 警告: 初始化将指针赋给整数,未作类型转换 [默认启用]
  4. itemfact.c:8:2: 警告: (在‘menu_items[3].callback_action’的初始化附近) [默认启用]
  5. itemfact.c:8:2: 错误: 初始值设定中的元素在载入时无法被计算出
  6. itemfact.c:8:2: 错误: (在‘menu_items[3].callback_action’的初始化附近)
  7. itemfact.c:10:2: 警告: 初始化将指针赋给整数,未作类型转换 [默认启用]
  8. itemfact.c:10:2: 警告: (在‘menu_items[5].callback_action’的初始化附近) [默认启用]
  9. itemfact.c:10:2: 错误: 初始值设定中的元素在载入时无法被计算出
  10. itemfact.c:10:2: 错误: (在‘menu_items[5].callback_action’的初始化附近)
  11. itemfact.c:12:2: 警告: 初始化将指针赋给整数,未作类型转换 [默认启用]
  12. itemfact.c:12:2: 警告: (在‘menu_items[7].callback_action’的初始化附近) [默认启用]
  13. itemfact.c:12:2: 错误: 初始值设定中的元素在载入时无法被计算出
  14. itemfact.c:12:2: 错误: (在‘menu_items[7].callback_action’的初始化附近)
  15. make: *** [all] 错误 1
复制代码
各位帮忙解决下吧

论坛徽章:
0
2 [报告]
发表于 2012-07-27 08:15 |只看该作者
今天人好像有点少啊回复 1# chinesedragon


   

论坛徽章:
0
3 [报告]
发表于 2012-07-27 10:25 |只看该作者
gcc 4.4.3 ubuntu 10.04lts
添加

  1. void on_menu_activate(GtkMenuItem *menu, gpointer data)
  2. {

  3. }
复制代码
后,没有报错

论坛徽章:
0
4 [报告]
发表于 2012-07-27 10:27 |只看该作者

  1. gcc itemfact.c -o itemfact `pkg-config --cflags --libs gtk+-2.0`  -Wall
复制代码
没写makefile

论坛徽章:
0
5 [报告]
发表于 2012-07-27 10:30 |只看该作者
从错误出现在第8,10,12行看,我猜跟中文的字符串(如“退出”,“复制”,“关于”)有关。

论坛徽章:
0
6 [报告]
发表于 2012-07-27 10:32 |只看该作者
我写Makefile了,错误我都巾出来了
kevin_zcwen 发表于 2012-07-27 10:27
没写makefile

论坛徽章:
0
7 [报告]
发表于 2012-07-27 10:33 |只看该作者
我把这个函数写全也还是报一样的错误。
GCC 4.6.3
Ubuntu 12.04 LTS
回复 3# kevin_zcwen


   

论坛徽章:
0
8 [报告]
发表于 2012-07-27 10:34 |只看该作者
没有关系,改成英文一样
knightrain 发表于 2012-07-27 10:30
从错误出现在第8,10,12行看,我猜跟中文的字符串(如“退出”,“复制”,“关于”)有关。

论坛徽章:
0
9 [报告]
发表于 2012-07-27 10:35 |只看该作者
应该是GtkItemFactoryEntry结构体的第四个参数的类型的问题
knightrain 发表于 2012-07-27 10:30
从错误出现在第8,10,12行看,我猜跟中文的字符串(如“退出”,“复制”,“关于”)有关。

论坛徽章:
0
10 [报告]
发表于 2012-07-27 10:44 |只看该作者
我之前编译成功,执行后发现windows拷贝过去的源代码中中文不能识别,我改成英文后正常,没有warning
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP