2016-06-03 10 views
1

Ich bekomme Fehler beim Kompilieren einer GTK + -Anwendung, die besagt, dass ich nicht deklarierte Funktionen/Definitionen habe (ich glaube GTK_OBJECT könnte eine Definition in einer Header-Datei sein). Dies ist mein Code (main.c):Nicht deklarierte GTK_OBJECT während g ++ Kompilierung

#include <gtk/gtk.h> 

static gint delete_event_cb(GtkWidget* w, GdkEventAny* e, gpointer data); 

int main(int argc, char *argv[]) { 
    //Create widgets 
    GtkWidget *window; 

    gtk_init(&argc, &argv); 

    //Initialize widgets 
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL); 

    //Configure widgets 
    gtk_window_set_title(GTK_WINDOW(window), "Hello World"); 

    //Display widgets 
    gtk_widget_show(window); 

    //Set up signals 
    gtk_signal_connect(GTK_OBJECT(window), "delete_event", GTK_SIGNAL_FUNC(delete_event_cb), NULL); 

    gtk_main(); 
    return 0; 
} 

static gint delete_event_cb(GtkWidget* w, GdkEventAny* e, gpointer data) { 
    gtk_main_quit(); 
    turn FALSE; 
} 

ich den folgenden Befehl in bash bin mit:

g++ `pkg-config --libs --cflags gtk+-3.0` main.c -o binary 

Ich habe tun, um die Entwicklerversion von GTK + 3.0 installiert. Jede Hilfe wird sehr geschätzt.

Edit: Dies ist die Fehlermeldung erhalte ich:

main.c: In function ‘int main(int, char**)’: 
main.c:21:41: error: ‘GTK_OBJECT’ was not declared in this scope 
    gtk_signal_connect(GTK_OBJECT(window), "delete_event", GTK_SIGNAL_FUNC(delete_event_cb), NULL); 
             ^
main.c:21:91: error: ‘GTK_SIGNAL_FUNC’ was not declared in this scope 
    gtk_signal_connect(GTK_OBJECT(window), "delete_event", GTK_SIGNAL_FUNC(delete_event_cb), NULL); 
                         ^
main.c:21:98: error: ‘gtk_signal_connect’ was not declared in this scope 
    gtk_signal_connect(GTK_OBJECT(window), "delete_event", GTK_SIGNAL_FUNC(delete_event_cb), NULL); 
                           ^
In file included from /usr/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h:9:0, 
       from /usr/include/glib-2.0/glib/gtypes.h:32, 
       from /usr/include/glib-2.0/glib/galloca.h:32, 
       from /usr/include/glib-2.0/glib.h:30, 
       from /usr/include/gtk-3.0/gdk/gdkconfig.h:13, 
       from /usr/include/gtk-3.0/gdk/gdk.h:30, 
       from /usr/include/gtk-3.0/gtk/gtk.h:30, 
       from main.c:1: 
main.c: In function ‘gint delete_event_cb(GtkWidget*, GdkEventAny*, gpointer)’: 
/usr/include/glib-2.0/glib/gmacros.h:229:17: error: ‘turn’ was not declared in this scope 
#define FALSE (0) 
       ^
main.c:29:10: note: in expansion of macro ‘FALSE’ 
    turn FALSE; 
     ^
+0

Bitte kopieren Sie den Fehler fügen Sie bekommen, so können wir die gleiche Sache, die Sie sehen. – nos

+0

Fertig. Ich habe es meinem Beitrag hinzugefügt. – Pelle

+1

'GTK_OBJECT()' und 'GTK_SIGNAL_FUNC()' sind GTK + 2. Sie kompilieren mit GTK + 3. Welche wollen Sie verwenden, 2 oder 3? – andlabs

Antwort

1

ich es von mir gelöst, aber es war schwierig, herauszufinden, wie. Ich gab g ++ die falsche Reihenfolge von Argumenten und verpasste auch ein Argument. Dies ist die bash-Befehl, der für mich gearbeitet:

g++ `pkg-config --libs --cflags gtk+-3.0` main.c -o binary `pkg-config --libs gtk+-3.0`