2012-12-23 115 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