PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : GTK 1.2 "g_signal_connect" ...



solanum
24-06-2002, 15:55
Der Code, um den es mir geht ist folgender:
#include <gtk/gtk.h>

void destroy(GtkWidget *widget, gpointer data)
{
gtk_main_quit();
}

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

gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

g_signal_connect(G_OBJECT (window), "destroy", G_CALLBACK (destroy), NULL);

gtk_widget_show(window);
gtk_main();

return 0;
}Wenn ich diesen nun mit
gcc test.c -o test `gtk-config --cflags --libs`compile, so kommen folgende Fehler:
/tmp/cc3BDIv8.o: In function `main':
/tmp/cc3BDIv8.o(.text+0x48): undefined reference to `G_CALLBACK'
/tmp/cc3BDIv8.o(.text+0x5b): undefined reference to `G_OBJECT'
/tmp/cc3BDIv8.o(.text+0x66): undefined reference to `g_signal_connect'
collect2: ld returned 1 exit statusWoran liegt das?
Falls es helfen sollte: Ohne das "g_signal_connect" und die dazugehörige Funktion klappt es wunderbar. GTK Version ist 1.2 denke ich.

solanum

Trillian
24-06-2002, 17:44
Öhm? IIRC heisst's bei GTK 1.2 "gtk_signal_connect", und erst ab 2 "g_signal_connect".
Evtl. gilt selbiges für G_OBJECT/GTK_OBJECT. Ich habe die Gtk 1.2 API Referenz grad nicht da, kann nicht nachgucken.

Der Compiler-Aufruf ist schon richtig.

tkortkamp
24-06-2002, 17:47
Hi!

Das sieht mir mehr nach Gtk+ 2 / GLib 2 aus.
Für Gtk+ 1.2 probier mal die Zeile


g_signal_connect(G_OBJECT (window), "destroy", G_CALLBACK(destroy), NULL);

in folgende zu ändern:


gtk_signal_connect(GTK_OBJECT (window), "destroy", GTK_CALLBACK(destroy), NULL);

Der Compiler-Aufruf ist, wenn du Gtk+ 2 benutzt falsch. Er muss


gcc test.c -o test `pkg-config --cflags --libs gtk+-2.0`

lauten.

Hoffe das hilft.


c ya,
Tobias

solanum
24-06-2002, 22:01
Danke, hat sich insofern erledigt, dass ich GTK 2.0 gezogen habe. Wusste nicht, dass die API für 1.2 nicht gilt. Vielen Dank daher euch beiden!

solanum