亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 3278 | 回復(fù): 4
打印 上一主題 下一主題

一個gtk+的問題,不好意思,實(shí)在找不到其他發(fā)帖的地方 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2005-12-28 23:17 |只看該作者 |倒序?yàn)g覽
本來以前l(fā)inuxforum.net上面有個板塊是專門用來討論linux 下面gui編程的。但是最近linuxforum暫時(shí)關(guān)了,所以只好到這里碰碰運(yùn)氣。
我寫了一個小的即時(shí)通信軟件,我想模擬linux下面gaim那種托盤效果,就是在系統(tǒng)托盤上出現(xiàn)一個小圖標(biāo),用于控制。
gtk+2.9版本已經(jīng)提供了相應(yīng)的控件,所以很容易實(shí)現(xiàn)這個功能。但是我用的是gtk+2.6.4,在該版本中還沒有實(shí)現(xiàn)這個功能。所以,我只好借助于一個非官方的libegg庫來實(shí)現(xiàn)這個功能。
我參考了這篇文章:http://bbs.lupaworld.com/htm_data/90/0511/11308.html
文章的大體意思是說,將eggtrayicon.c, eggtrayicon.h這兩個文件下載到我的源程序目錄中,然后在自己的程序中包含頭文件,然后調(diào)用其函數(shù)。
然后再寫好Makefile進(jìn)行編譯,但是編譯的時(shí)候卻出錯了,錯誤就是處在這兩個文件之中。
錯誤代碼如下:
gcc -c trayicon.c `pkg-config --cflags gtk+-2.0`
gcc -c eggtrayicon.c `pkg-config --cflags gtk+-2.0`
eggtrayicon.c: In function `egg_tray_icon_class_init':
eggtrayicon.c:127: error: `GETTEXT_PACKAGE' undeclared (first use in this function)
eggtrayicon.c:127: error: (Each undeclared identifier is reported only once
eggtrayicon.c:127: error: for each function it appears in.)
make: *** [eggtrayicon.o] \u9519\u8bef 1

我的makefile代碼如下:
CC = gcc
exipmsg:main.o mainwindow.o network.o utility.o treatmess.o recdialog.o popmenu.o trayicon.o eggtrayicon.o
        $(CC) -o exipmsg main.o mainwindow.o network.o utility.o treatmess.o recdialog.o popmenu.o trayicon.o `pkg-config --libs gtk+-2.0`
main.o:main.c config.h head.h ipmsg.h mainwindow.h
        $(CC) -c main.c `pkg-config --cflags gtk+-2.0`
mainwindow.o:mainwindow.c config.h head.h ipmsg.h mainwindow.h
        $(CC) -c mainwindow.c `pkg-config --cflags gtk+-2.0`
network.o:network.c network.h config.h head.h ipmsg.h
        $(CC) -c network.c `pkg-config --cflags gtk+-2.0`
utility.o:utility.c utility.h config.h head.h ipmsg.h
        $(CC) -c utility.c `pkg-config --cflags gtk+-2.0`
treatmess.o:treatmess.c head.h treatmess.h config.h ipmsg.h recdialog.h network.h
        $(CC) -c treatmess.c `pkg-config --cflags gtk+-2.0`                       
recdialog.o:recdialog.c recdialog.h config.h head.h ipmsg.h       
        $(CC) -c recdialog.c `pkg-config --cflags gtk+-2.0`
trayicon.o:trayicon.c trayicon.h head.h config.h popmenu.h ipmsg.h mainwindow.h
        $(CC) -c trayicon.c `pkg-config --cflags gtk+-2.0`
popmenu.o:popmenu.c popmenu.h config.h head.h ipmsg.h mainwindow.h
        $(CC) -c popmenu.c `pkg-config --cflags gtk+-2.0`
eggtrayicon.o:eggtrayicon.c eggtrayicon.h
        $(CC) -c eggtrayicon.c `pkg-config --cflags gtk+-2.0`
               
我不知道這個eggtrayicon還依賴于什么庫以及什么頭文件?我對gtk+2.0的整體結(jié)構(gòu)還不是很清楚,只知道它是xlib的封裝外加glib,pango等功能庫。還請多多指點(diǎn)。謝謝。!

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2005-12-29 00:11 |只看該作者
看起來是你的系統(tǒng)上沒有g(shù)ettext-devel這個rpm包.

如果是linux的話,先用
rpm -qa | grep gettext
確定你有沒有安裝gettext和gettext-devel這幾個包,
如果沒有的話,安裝在編譯。

至于那個版本,依據(jù)你的系統(tǒng)而定.

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2005-12-29 14:29 |只看該作者

回復(fù) 2樓 renstone921 的帖子

我用的是ubuntu5.04,我在包管理器中看了一下,gettext的包已經(jīng)安裝了。
一共安裝了兩個工具包gettext以及gettext-base,難道版本兼容的問題。
還有就是我在上文中提高了那個例子,http://bbs.lupaworld.com/htm_data/90/0511/11308.html
在我機(jī)器上正常編譯運(yùn)行了,所以應(yīng)該說我的機(jī)器上應(yīng)該不缺開發(fā)包。但是我實(shí)在不知道那個例子是如何正常編譯的。我看不太懂a(chǎn)utomake生成的makefile文件。
還請繼續(xù)指點(diǎn),謝謝。我被這個問題困擾很久了。

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2005-12-29 17:09 |只看該作者

  1. #ifndef EGG_COMPILATION
  2. #ifndef _
  3. #define _(x) dgettext (GETTEXT_PACKAGE, x)
  4. #define N_(x) x
  5. #endif
  6. #else
  7. #define _(x) x
  8. #define N_(x) x
  9. #endif


  10. ....


  11. g_object_class_install_property (gobject_class,
  12.                    PROP_ORIENTATION,
  13.                    g_param_spec_enum ("orientation",
  14.                     _("Orientation"),
  15.                    _("The orientation of the tray."),
  16.                   GTK_TYPE_ORIENTATION,
  17.                   GTK_ORIENTATION_HORIZONTAL,
  18.                   G_PARAM_READABLE));

復(fù)制代碼

是上面的#ifndef EGG_COMPILATION這個宏的影響
當(dāng)你沒用定義EGG_COMPILATION時(shí),下劃線_會被定義成一個宏
_("Orientation"),
就是dgettext (GETTEXT_PACKAGE, "Orientation")
而GETTEXT_PACKAGE他不知道到哪里去找

實(shí)際上GETTEXT_PACKAGE在config.h里面被定義為
#define GETTEXT_PACKAGE "gnome-notification-area-demo"
只不過是一個字符串的宏而已.表示應(yīng)用程序的名字,你用你的程序的名字替換不就行了.

用別人的源代碼,總不至于一點(diǎn)也不需要修改吧.

[ 本帖最后由 renstone921 于 2005-12-29 17:51 編輯 ]

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2005-12-29 18:34 |只看該作者
請問你是怎么知道會有config.h這個頭文件的?我在編譯的時(shí)候提示找不到config.h,于是我就把它注釋掉了。這個config.h是被包含在eggtrayicon.c中的。#include <config.h>//竟然是到系統(tǒng)頭文件夾下面找!

謝謝斑竹的熱心,請問您是不是用過這個庫?其實(shí)問題全出在這個config.h中,eggtrayicon.h和eggtrayicon.c需要這個config.h中的宏。這個config.h是不是也應(yīng)該是庫的一部分,但是那篇教程文章根本沒有提到啊。真是害人。!,F(xiàn)在我將這個config.h注釋掉了,用自己的config.h代替了,在自己的config.h中#define GETTEXT_PACKAGE "myapp"之后,然后編譯通過了。
還有能否發(fā)一份libegg庫的源碼給我,我只找到了那eggtrayicon.h eggtrayicon.c的源碼。
不勝感激啊。。。email:  onlyflyer#gmail.com
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP