2012-12-23 164 views
0

我試圖從GNOME2端口https://github.com/alexkay/xmonad-log-applet到MATE,到目前爲止我已經得到配置等,我正在嘗試構建。你可以在這裏找到我的修改:https://github.com/geniass/xmonad-log-applet。當我運行make,它開始建設,但在最後一行它給了這些錯誤:「預期的聲明說明符」使用GCC

main.c:92:39: error: expected declaration specifiers or ‘...’ before string constant 
main.c:92:65: error: expected declaration specifiers or ‘...’ before ‘(’ token 
main.c:92:84: error: expected declaration specifiers or ‘...’ before string constant 
main.c:92:103: error: expected declaration specifiers or ‘...’ before ‘xmonad_log_applet_factory’ 
main.c:92:130: error: expected declaration specifiers or ‘...’ before ‘(’ token 

我在這裏看到計算器上有不少類似的問題,但他們大多是要離開了大括號或方法原型返回類型。我在這裏看不到,但也許我錯過了一個?除了這種可能性之外,我完全不知道什麼是錯的。這些錯誤是完全沒有意義對我

這裏是爲了清楚起見移除了IFDEF的(給出了同樣的錯誤)的main.c:

#include "config.h" 
#include <stdlib.h> 
#include <string.h> 
#include <gtk/gtk.h> 
#include <dbus/dbus-glib.h> 
#include <mate-panel-applet.h> 

static void signal_handler(DBusGProxy *obj, const char *msg, GtkWidget *widget) 
{ 
    gtk_label_set_markup(GTK_LABEL(widget), msg); 
} 

static void set_up_dbus_transfer(GtkWidget *buf) 
{ 
    DBusGConnection *connection; 
    DBusGProxy *proxy; 
    GError *error= NULL; 

    connection = dbus_g_bus_get(DBUS_BUS_SESSION, &error); 
    if(connection == NULL) { 
     g_printerr("Failed to open connection: %s\n", error->message); 
     g_error_free(error); 
     exit(1); 
    } 

    proxy = dbus_g_proxy_new_for_name(
     connection, "org.xmonad.Log", "/org/xmonad/Log", "org.xmonad.Log"); 
    error = NULL; 

    dbus_g_proxy_add_signal(proxy, "Update", G_TYPE_STRING, G_TYPE_INVALID); 
    dbus_g_proxy_connect_signal(
     proxy, "Update", (GCallback)signal_handler, buf, NULL); 
} 

static gboolean xmonad_log_applet_fill(MatePanelApplet *applet) 
{ 
    mate_panel_applet_set_flags(
     applet, 
     MATE_PANEL_APPLET_EXPAND_MAJOR | 
     MATE_PANEL_APPLET_EXPAND_MINOR | 
     MATE_PANEL_APPLET_HAS_HANDLE); 

    mate_panel_applet_set_background_widget(applet, GTK_WIDGET(applet)); 

    GtkWidget *label = gtk_label_new("Waiting for Xmonad..."); 
    gtk_label_set_ellipsize(GTK_LABEL(label), PANGO_ELLIPSIZE_END); 

    gtk_label_set_use_markup(GTK_LABEL(label), TRUE); 
    gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); 
    set_up_dbus_transfer(label); 

    gtk_container_add(GTK_CONTAINER(applet), label); 
    gtk_widget_show_all(GTK_WIDGET(applet)); 

    return TRUE; 
} 

static gboolean xmonad_log_applet_factory(
    MatePanelApplet *applet, const gchar *iid, gpointer data) 
{ 
    gboolean retval = FALSE; 

    if(!strcmp(iid, "XmonadLogApplet")) 
     retval = xmonad_log_applet_fill(applet); 

    if(retval == FALSE) { 
     printf("Wrong applet!\n"); 
     exit(-1); 
    } 

    return retval; 
} 

MATE_PANEL_APPLET_OUT_PROCESS_FACTORY("XmonadLogAppletFactory", PANEL_TYPE_APPLET, "XmonadLogApplet", xmonad_log_applet_factory, NULL); 
+0

您的錯誤在第92行。 您應該告訴我們哪一行是92 ...否則我們必須猜測! – abelenky

+0

OK線92是最後一行,'MATE_PANEL_APPLET_OUT_PROCESS_FACTORY( 「XmonadLogAppletFactory」,PANEL_TYPE_APPLET, 「XmonadLogApplet」,xmonad_log_applet_factory,NULL);' – geniass

+0

也'MATE_PANEL_APPLET_OUT_PROCESS_FACTORY'就是創建一個main方法的宏,源可能在這裏:HTTPS:/ /github.com/mate-desktop/mate-panel/blob/master/libmate-panel-applet/mate-panel-applet.h – geniass

回答

1

原來我只是使用舊版本的libmatepanel庫。我使用的是2.0,而當前版本是3.0。出於某種原因,我在我的系統上都有這兩個問題

1

看起來你錯過了包括提供的MATE_PANEL_APPLET_OUT_PROCESS_FACTORY

定義
+1

廢話我忘了推。需要咖啡 – geniass

+0

好吧,我推動了變化 – geniass