ubuntuusers.de

Problem mit C und GTK+

Status: Ungelöst | Ubuntu-Version: Ubuntu 16.04 (Xenial Xerus)
Antworten |

Mall0c

Anmeldungsdatum:
23. November 2016

Beiträge: Zähle...

Hallo ^^

Ich hab da ein kleines Problem was GTK+ in C betrifft. Ich habe mit einem C Lernbuch gearbeitet und meine Aufgabe war es, ein kleines Fenster mit einer Call-Back Funktion zu schreiben. Doch es kommt zu diesem Fehler hier :

Nicht definierter Verweis auf GTK_OBJECT.

Ich benutze Codeblocks und habe die lib für GTK schon installiert. Nun bitte ich um schnelle Hilfe.

Gruß Mall0c

Hier der gesamte Code:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43

#include <gtk/gtk.h>

//Funktionen
void ButtonClick(GtkWidget*, gpointer);

int main(int argc, char **argv)
{

GtkWidget *Fenster;
GtkWidget *Knopf;

//GTK initialisieren und Widgets erzeugen
gtk_init(&argc, &argv);
Fenster = gtk_window_new(0);
Knopf = gtk_button_new_with_label("Klick mich!");

//Fenster herrichten
gtk_window_set_position(GTK_WINDOW(Fenster), 1);
gtk_window_set_default_size(GTK_WINDOW(Fenster), 400, 300);
gtk_window_set_title(GTK_WINDOW(Fenster), "Neu");

//Button ins Fenster einbetten
gtk_container_set_border_width(GTK_CONTAINER(Fenster), 100);
gtk_container_add(GTK_CONTAINER(Fenster), Knopf);

//Ereigniss mit Callback-Funktion verbinden
g_signal_connect(GTK_OBJECT(Knopf), "clicked", G_CALLBACK(ButtonClick), NULL);
g_signal_connect(GTK_OBJECT(Fenster), "destroy", G_CALLBACK(gtk_main_quit), NULL);

//Fenster mit Button anzeigen
gtk_widget_show(Knopf);
gtk_widget_show(Fenster);

return 0;

}


void ButtonClick(GtkWidget *widget, gpointer data)
{
gtk_button_set_label_(GTK_BUTTON(widget), "OK");
}

Und hier der Build log:

-------------- Build: Debug in G1 (compiler: GNU GCC Compiler)---------------

g++  -o bin/Debug/G1 obj/Debug/main.o  -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype  
obj/Debug/main.o: In Funktion `main':
/home/***/Schreibtisch/C/G1/main.c:27: Nicht definierter Verweis auf `GTK_OBJECT'
/home/***/Schreibtisch/C/G1/main.c:28: Nicht definierter Verweis auf `GTK_OBJECT'
obj/Debug/main.o: In Funktion `ButtonClick':
/home/***/Schreibtisch/C/G1/main.c:41: Nicht definierter Verweis auf `gtk_button_set_label_'
collect2: error: ld returned 1 exit status
Process terminated with status 1 (0 minute(s), 0 second(s))
3 error(s), 0 warning(s) (0 minute(s), 0 second(s))

Bearbeitet von rklm:

Falsches Markup korrigiert. Benutze die Vorschaufunktion!

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13219

Mall0c schrieb:

Ich hab da ein kleines Problem was GTK+ in C betrifft. Ich habe mit einem C Lernbuch gearbeitet und meine Aufgabe war es, ein kleines Fenster mit einer Call-Back Funktion zu schreiben.

Wir sind hier nicht die Hausaufgabenhilfe.

Nun bitte ich um schnelle Hilfe.

Wenn Dir schnelle Hilfe wichtig ist, dann solltest Du Deinen Beitrag mindestens schon mal so formatieren, dass die Leser etwas damit anfangen können. Da hier aber alle freiwillig helfen, sind Aufforderungen schnell zu helfen generell ziemlich zwecklos. Siehe auch Richtig fragen

Mall0c

(Themenstarter)

Anmeldungsdatum:
23. November 2016

Beiträge: 33

Oh ja ich habe eigentlich auch 3 geschweifte Klammern vorne dran gesetzt und auch dahinter, doch es wurde irgendwie nicht richtig formatiert ☹ Danke für die Verbesserung ☺ Mall0c

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11269

Wohnort: München

Ich denke da ist ein Unterstrich zu viel - laut GTK-Referenz gibt es gtk-button-set-label, aber von gtk-button-set-label_ steht da nichts.

Und bei g_signal_connect() kannst das Objekt direkt angeben, vgl. Beispiele in https://developer.gnome.org/gtk3/stable/gtk-getting-started.html

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13219

Mall0c schrieb:

Oh ja ich habe eigentlich auch 3 geschweifte Klammern vorne dran gesetzt und auch dahinter, doch es wurde irgendwie nicht richtig formatiert ☹

Es war der einzelne Backtick. Das hättest Du auch mit der Vorschaufunktion gefunden.

Mall0c

(Themenstarter)

Anmeldungsdatum:
23. November 2016

Beiträge: 33

Hallo seahawk1986!

Vielen Dank, dein Beitrag hat mir schon mal geholfen ☺

Beim starten des Programms öffnet sich nun xTerm dann mit folgendem Inhalt: siehe Bild (sorry aber ich habe es nicht geschafft die Zeilen aus dem xTerm zu kopieren ☹)

Gruß

Mall0c

Bilder
Antworten |