PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : dev c++ und gtk kompilieren



barton4
05-08-2008, 13:04
Hi,
ich hab versucht ein gtk+ Programm unter devc++ zu kompilieren. Leider funktioniert das Linken nicht:



Compiler: Default compiler
Building Makefile: "D:\myfiles\Programmieren\SortAlgorithm(SF2)\projec t_win32devcpp\Makefile.win"
Executing make...
make.exe -f "D:\myfiles\Programmieren\SortAlgorithm(SF2)\projec t_win32devcpp\Makefile.win" all
g++.exe ../src/CBenchmark.o ../src/console.o ../src/CSortAlgorithm.o ../src/CTree.o ../src/gtkeventh.o ../src/gtkgui.o ../src/main.o -o "project_Win32DevCPP.exe" -L"C:/Programme/Dev-Cpp/lib" -L"C:/GTK/lib" -L"C:/Programme/Dev-Cpp/bin" -L"C:/GTK/bin"

../src/gtkeventh.o(.text+0x18e):gtkeventh.cpp: undefined reference to `gtk_entry_get_type'
../src/gtkeventh.o(.text+0x19f):gtkeventh.cpp: undefined reference to `g_type_check_instance_cast'
../src/gtkeventh.o(.text+0x1a7):gtkeventh.cpp: undefined reference to `gtk_entry_get_text'
../src/gtkeventh.o(.text+0x269):gtkeventh.cpp: undefined reference to `g_object_get'
../src/gtkeventh.o(.text+0x4f0):gtkeventh.cpp: undefined reference to `g_object_set'
../src/gtkeventh.o(.text+0x5a9):gtkeventh.cpp: undefined reference to `gdk_cairo_create'
../src/gtkeventh.o(.text+0x5c9):gtkeventh.cpp: undefined reference to `gtk_entry_get_type'
../src/gtkeventh.o(.text+0x5da):gtkeventh.cpp: undefined reference to `g_type_check_instance_cast'
../src/gtkeventh.o(.text+0x5e2):gtkeventh.cpp: undefined reference to `gtk_entry_get_text'
../src/gtkeventh.o(.text+0x5ea):gtkeventh.cpp: undefined reference to `gtk_entry_get_type'
../src/gtkeventh.o(.text+0x5fb):gtkeventh.cpp: undefined reference to `g_type_check_instance_cast'
../src/gtkeventh.o(.text+0x603):gtkeventh.cpp: undefined reference to `gtk_entry_get_text'
../src/gtkeventh.o(.text+0x60b):gtkeventh.cpp: undefined reference to `gtk_entry_get_type'
../src/gtkeventh.o(.text+0x61c):gtkeventh.cpp: undefined reference to `g_type_check_instance_cast'
../src/gtkeventh.o(.text+0x624):gtkeventh.cpp: undefined reference to `gtk_entry_get_text'
../src/gtkeventh.o(.text+0x74f):gtkeventh.cpp: undefined reference to `gtk_window_get_type'
../src/gtkeventh.o(.text+0x760):gtkeventh.cpp: undefined reference to `g_type_check_instance_cast'
../src/gtkeventh.o(.text+0x790):gtkeventh.cpp: undefined reference to `gtk_message_dialog_new'
../src/gtkeventh.o(.text+0x7b8):gtkeventh.cpp: undefined reference to `gtk_widget_destroy'
../src/gtkeventh.o(.text+0x7ce):gtkeventh.cpp: undefined reference to `g_signal_connect_data'
../src/gtkeventh.o(.text+0x7dc):gtkeventh.cpp: undefined reference to `gtk_widget_show'
../src/gtkeventh.o(.text+0x83a):gtkeventh.cpp: undefined reference to `gtk_window_get_type'
../src/gtkeventh.o(.text+0x855):gtkeventh.cpp: undefined reference to `g_type_check_instance_cast'
../src/gtkeventh.o(.text+0x885):gtkeventh.cpp: undefined reference to `gtk_message_dialog_new'
../src/gtkeventh.o(.text+0x8ad):gtkeventh.cpp: undefined reference to `gtk_widget_destroy'
../src/gtkeventh.o(.text+0x8c3):gtkeventh.cpp: undefined reference to `g_signal_connect_data'
../src/gtkeventh.o(.text+0x8d1):gtkeventh.cpp: undefined reference to `gtk_widget_show'
../src/gtkeventh.o(.text+0x939):gtkeventh.cpp: undefined reference to `gtk_window_get_type'
../src/gtkeventh.o(.text+0x954):gtkeventh.cpp: undefined reference to `g_type_check_instance_cast'
../src/gtkeventh.o(.text+0x984):gtkeventh.cpp: undefined reference to `gtk_message_dialog_new'
../src/gtkeventh.o(.text+0x9ac):gtkeventh.cpp: undefined reference to `gtk_widget_destroy'
../src/gtkeventh.o(.text+0x9c2):gtkeventh.cpp: undefined reference to `g_signal_connect_data'
../src/gtkeventh.o(.text+0x9d0):gtkeventh.cpp: undefined reference to `gtk_widget_show'
../src/gtkeventh.o(.text+0xa34):gtkeventh.cpp: undefined reference to `gtk_option_menu_get_history'

../src/gtkeventh.o(.text+0xd8c):gtkeventh.cpp: undefined reference to `cairo_set_source_rgb'
../src/gtkeventh.o(.text+0xf4b):gtkeventh.cpp: undefined reference to `cairo_move_to'
../src/gtkeventh.o(.text+0xf95):gtkeventh.cpp: undefined reference to `cairo_line_to'
../src/gtkeventh.o(.text+0x1075):gtkeventh.cpp: undefined reference to `cairo_stroke'
../src/gtkeventh.o(.text+0x1257):gtkeventh.cpp: undefined reference to `cairo_save'
../src/gtkeventh.o(.text+0x1288):gtkeventh.cpp: undefined reference to `cairo_set_source_rgba'
../src/gtkeventh.o(.text+0x129d):gtkeventh.cpp: undefined reference to `cairo_set_operator'
../src/gtkeventh.o(.text+0x12aa):gtkeventh.cpp: undefined reference to `cairo_paint'
../src/gtkeventh.o(.text+0x12b7):gtkeventh.cpp: undefined reference to `cairo_restore'
../src/gtkeventh.o(.text+0x1467):gtkeventh.cpp: undefined reference to `g_object_set'
../src/gtkeventh.o(.text+0x1709):gtkeventh.cpp: undefined reference to `g_object_set'
../src/gtkeventh.o(.text+0x1815):gtkeventh.cpp: undefined reference to `cairo_set_source_rgb'

../src/gtkeventh.o(.text+0x1828):gtkeventh.cpp: undefined reference to `cairo_set_line_width'
../src/gtkeventh.o(.text+0x185b):gtkeventh.cpp: undefined reference to `cairo_move_to'
../src/gtkeventh.o(.text+0x188e):gtkeventh.cpp: undefined reference to `cairo_line_to'
../src/gtkeventh.o(.text+0x18c1):gtkeventh.cpp: undefined reference to `cairo_move_to'
../src/gtkeventh.o(.text+0x18f4):gtkeventh.cpp: undefined reference to `cairo_line_to'
../src/gtkeventh.o(.text+0x1901):gtkeventh.cpp: undefined reference to `cairo_stroke'
../src/gtkeventh.o(.text+0x1918):gtkeventh.cpp: undefined reference to `cairo_set_line_width'
../src/gtkeventh.o(.text+0x1965):gtkeventh.cpp: undefined reference to `cairo_move_to'
../src/gtkeventh.o(.text+0x199b):gtkeventh.cpp: undefined reference to `cairo_line_to'
../src/gtkeventh.o(.text+0x19f9):gtkeventh.cpp: undefined reference to `cairo_move_to'
../src/gtkeventh.o(.text+0x1a2f):gtkeventh.cpp: undefined reference to `cairo_line_to'
../src/gtkeventh.o(.text+0x1a4d):gtkeventh.cpp: undefined reference to `cairo_stroke'
../src/gtkeventh.o(.text+0x1a72):gtkeventh.cpp: undefined reference to `cairo_select_font_face'
../src/gtkeventh.o(.text+0x1a89):gtkeventh.cpp: undefined reference to `cairo_set_font_size'
../src/gtkeventh.o(.text+0x1ac2):gtkeventh.cpp: undefined reference to `cairo_move_to'
../src/gtkeventh.o(.text+0x1ad7):gtkeventh.cpp: undefined reference to `cairo_show_text'
../src/gtkeventh.o(.text+0x1b10):gtkeventh.cpp: undefined reference to `cairo_move_to'
../src/gtkeventh.o(.text+0x1b25):gtkeventh.cpp: undefined reference to `cairo_show_text'
../src/gtkgui.o(.text+0x48):gtkgui.cpp: undefined reference to `g_snprintf'
../src/gtkgui.o(.text+0x69):gtkgui.cpp: undefined reference to `g_snprintf'
../src/gtkgui.o(.text+0x8a):gtkgui.cpp: undefined reference to `g_snprintf'
../src/gtkgui.o(.text+0xab):gtkgui.cpp: undefined reference to `g_snprintf'
../src/gtkgui.o(.text+0xc9):gtkgui.cpp: undefined reference to `g_snprintf'

../src/gtkgui.o(.text+0xe7):gtkgui.cpp: more undefined references to `g_snprintf' follow
../src/gtkgui.o(.text+0x12b):gtkgui.cpp: undefined reference to `gtk_check_button_get_type'
../src/gtkgui.o(.text+0x14b):gtkgui.cpp: undefined reference to `g_object_new'
../src/gtkgui.o(.text+0x161):gtkgui.cpp: undefined reference to `gtk_table_get_type'
../src/gtkgui.o(.text+0x191):gtkgui.cpp: undefined reference to `g_object_new'
../src/gtkgui.o(.text+0x1ab):gtkgui.cpp: undefined reference to `gtk_label_get_type'
../src/gtkgui.o(.text+0x1ce):gtkgui.cpp: undefined reference to `g_object_new'
../src/gtkgui.o(.text+0x1f2):gtkgui.cpp: undefined reference to `gtk_widget_get_type'
../src/gtkgui.o(.text+0x208):gtkgui.cpp: undefined reference to `g_type_check_instance_cast'
../src/gtkgui.o(.text+0x20f):gtkgui.cpp: undefined reference to `gtk_table_get_type'
../src/gtkgui.o(.text+0x220):gtkgui.cpp: undefined reference to `g_type_check_instance_cast'
../src/gtkgui.o(.text+0x24d):gtkgui.cpp: undefined reference to `gtk_table_attach_defaults'
../src/gtkgui.o(.text+0x252):gtkgui.cpp: undefined reference to `gtk_widget_get_type'

../src/gtkgui.o(.text+0x268):gtkgui.cpp: undefined reference to `g_type_check_instance_cast'
../src/gtkgui.o(.text+0x26f):gtkgui.cpp: undefined reference to `gtk_table_get_type'
../src/gtkgui.o(.text+0x280):gtkgui.cpp: undefined reference to `g_type_check_instance_cast'
../src/gtkgui.o(.text+0x2ad):gtkgui.cpp: undefined reference to `gtk_table_attach_defaults'
../src/gtkgui.o(.text+0x2bc):gtkgui.cpp: undefined reference to `gtk_vbox_get_type'
../src/gtkgui.o(.text+0x2cc):gtkgui.cpp: undefined reference to `g_object_new'
../src/gtkgui.o(.text+0x2d6):gtkgui.cpp: undefined reference to `gtk_hbox_get_type'
../src/gtkgui.o(.text+0x2e6):gtkgui.cpp: undefined reference to `g_object_new'
../src/gtkgui.o(.text+0x2f7):gtkgui.cpp: undefined reference to `gtk_button_new_with_label'
../src/gtkgui.o(.text+0x308):gtkgui.cpp: undefined reference to `gtk_button_new_with_label'
../src/gtkgui.o(.text+0x312):gtkgui.cpp: undefined reference to `gtk_hbutton_box_get_type'
../src/gtkgui.o(.text+0x342):gtkgui.cpp: undefined reference to `g_object_new'
../src/gtkgui.o(.text+0x34c):gtkgui.cpp: undefined reference to `gtk_entry_get_type'
../src/gtkgui.o(.text+0x37c):gtkgui.cpp: undefined reference to `g_object_new'
../src/gtkgui.o(.text+0x386):gtkgui.cpp: undefined reference to `gtk_widget_get_type'
../src/gtkgui.o(.text+0x397):gtkgui.cpp: undefined reference to `g_type_check_instance_cast'
../src/gtkgui.o(.text+0x39e):gtkgui.cpp: undefined reference to `gtk_box_get_type'
../src/gtkgui.o(.text+0x3af):gtkgui.cpp: undefined reference to `g_type_check_instance_cast'
../src/gtkgui.o(.text+0x3bb):gtkgui.cpp: undefined reference to `gtk_box_pack_start_defaults'
../src/gtkgui.o(.text+0x3c0):gtkgui.cpp: undefined reference to `gtk_widget_get_type'
../src/gtkgui.o(.text+0x3d1):gtkgui.cpp: undefined reference to `g_type_check_instance_cast'

../src/gtkgui.o(.text+0x3d8):gtkgui.cpp: undefined reference to `gtk_box_get_type'
../src/gtkgui.o(.text+0x3e9):gtkgui.cpp: undefined reference to `g_type_check_instance_cast'
../src/gtkgui.o(.text+0x3f5):gtkgui.cpp: undefined reference to `gtk_box_pack_start_defaults'
../src/gtkgui.o(.text+0x3fa):gtkgui.cpp: undefined reference to `gtk_widget_get_type'
../src/gtkgui.o(.text+0x40b):gtkgui.cpp: undefined reference to `g_type_check_instance_cast'
../src/gtkgui.o(.text+0x412):gtkgui.cpp: undefined reference to `gtk_box_get_type'
../src/gtkgui.o(.text+0x423):gtkgui.cpp: undefined reference to `g_type_check_instance_cast'
../src/gtkgui.o(.text+0x42f):gtkgui.cpp: undefined reference to `gtk_box_pack_start_defaults'
../src/gtkgui.o(.text+0x434):gtkgui.cpp: undefined reference to `gtk_widget_get_type'
../src/gtkgui.o(.text+0x445):gtkgui.cpp: undefined reference to `g_type_check_instance_cast'
../src/gtkgui.o(.text+0x44c):gtkgui.cpp: undefined reference to `gtk_box_get_type'

../src/gtkgui.o(.text+0x45d):gtkgui.cpp: undefined reference to `g_type_check_instance_cast'
../src/gtkgui.o(.text+0x469):gtkgui.cpp: undefined reference to `gtk_box_pack_start_defaults'
../src/gtkgui.o(.text+0x46e):gtkgui.cpp: undefined reference to `gtk_widget_get_type'
../src/gtkgui.o(.text+0x47f):gtkgui.cpp: undefined reference to `g_type_check_instance_cast'
../src/gtkgui.o(.text+0x486):gtkgui.cpp: undefined reference to `gtk_box_get_type'
../src/gtkgui.o(.text+0x497):gtkgui.cpp: undefined reference to `g_type_check_instance_cast'
../src/gtkgui.o(.text+0x4bb):gtkgui.cpp: undefined reference to `gtk_box_pack_start'
../src/gtkgui.o(.text+0x4c0):gtkgui.cpp: undefined reference to `gtk_widget_get_type'
../src/gtkgui.o(.text+0x4d1):gtkgui.cpp: undefined reference to `g_type_check_instance_cast'
../src/gtkgui.o(.text+0x4d8):gtkgui.cpp: undefined reference to `gtk_box_get_type'
../src/gtkgui.o(.text+0x4e9):gtkgui.cpp: undefined reference to `g_type_check_instance_cast'
../src/gtkgui.o(.text+0x50d):gtkgui.cpp: undefined reference to `gtk_box_pack_start'
../src/gtkgui.o(.text+0x542):gtkgui.cpp: undefined reference to `g_signal_connect_data'

../src/gtkgui.o(.text+0x577):gtkgui.cpp: undefined reference to `g_signal_connect_data'
../src/gtkgui.o(.text+0x58a):gtkgui.cpp: undefined reference to `gtk_vbox_get_type'
../src/gtkgui.o(.text+0x59a):gtkgui.cpp: undefined reference to `g_object_new'
../src/gtkgui.o(.text+0x5a4):gtkgui.cpp: undefined reference to `gtk_hbox_get_type'
../src/gtkgui.o(.text+0x5b4):gtkgui.cpp: undefined reference to `g_object_new'
../src/gtkgui.o(.text+0x5be):gtkgui.cpp: undefined reference to `gtk_button_get_type'
../src/gtkgui.o(.text+0x5de):gtkgui.cpp: undefined reference to `g_object_new'
../src/gtkgui.o(.text+0x5e8):gtkgui.cpp: undefined reference to `gtk_button_get_type'
../src/gtkgui.o(.text+0x608):gtkgui.cpp: undefined reference to `g_object_new'
../src/gtkgui.o(.text+0x612):gtkgui.cpp: undefined reference to `gtk_hbutton_box_get_type'
../src/gtkgui.o(.text+0x622):gtkgui.cpp: undefined reference to `g_object_new'
../src/gtkgui.o(.text+0x62c):gtkgui.cpp: undefined reference to `gtk_entry_get_type'
../src/gtkgui.o(.text+0x65c):gtkgui.cpp: undefined reference to `g_object_new'
../src/gtkgui.o(.text+0x666):gtkgui.cpp: undefined reference to `gtk_entry_get_type'
...
make.exe: *** [project_Win32DevCPP.exe] Error 1

Execution terminated



ich hab das verzeichnis in dem die Gtk+ dll drin sind als Path angegeben, irgendwie findet er die Symbole trotzdem nicht?

weis jemand einen Rat?

gruss martin

BLUESCREEN3D
05-08-2008, 13:57
g++.exe ... -L"C:/Programme/Dev-Cpp/lib" -L"C:/GTK/lib" -L"C:/Programme/Dev-Cpp/bin" -L"C:/GTK/bin"

ich hab das verzeichnis in dem die Gtk+ dll drin sind als Path angegeben, irgendwie findet er die Symbole trotzdem nicht?

Du sagst ihm zwar, in welchem Verzeichnis er suchen soll, aber du musst auch angeben, was gesucht werden soll.
Da fehlen also noch ein -lgtk (kleines l) oder so.

Gibt es auf dem System das Programm pkg-config? Wenn ja, guck dir mal die Ausgabe von "pkg-config --libs gtk+-2.0" an.

barton4
05-08-2008, 18:23
hab die fehlenden linker optionen noch hinzugefügt, wie du gesagt hattest, leider findet er immer noch nicht die die Bibliotheken

hier mal das makefile


CC=g++
BUILDIR="build/"
LDFLAGS= -L/cygdrive/c/GTK/bin/ -L/cygdrive/c/GTK/lib/ -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lpangowin32-1.0 -lgdi32 -lpangocairo-1.0 -lpango-1.0 -lcairo -lz -lm -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lintl -lpng12
CCFLAGS= -DCYGWIN -mno-cygwin -mms-bitfields -I/cygdrive/c/GTK/include/ -I/cygdrive/c/GTK/include/gtk-2.0 -I/cygdrive/c/GTK/include/atk-1.0/atk -I/cygdrive/c/GTK/include/atk-1.0/ -I/cygdrive/c/GTK/include/ -I/cygdrive/c/GTK/include/glib-2.0 -I/cygdrive/c/GTK/include/cairo/ -I/cygdrive/c/GTK/include/pango-1.0/ -I/cygdrive/c/GTK/lib/glib-2.0/include/ -I/cygdrive/c/GTK/lib/gtk-2.0/include -I/cygdrive/c/GTK/include/glib-2.0/glib/

main: $(BUILDIR)CBenchmark.o $(BUILDIR)CSortAlgorithm.o $(BUILDIR)CTree.o $(BUILDIR)console.o $(BUILDIR)gtkgui.o $(BUILDIR)gtkeventh.o $(BUILDIR)main.o
$(CC) $(CCFLAGS) $(LDFLAGS) -o $(BUILDIR)mainprog $(BUILDIR)main.o $(BUILDIR)CBenchmark.o $(BUILDIR)CSortAlgorithm.o $(BUILDIR)CTree.o $(BUILDIR)console.o $(BUILDIR)gtkgui.o $(BUILDIR)gtkeventh.o

$(BUILDIR)main.o: ./src/main.cpp
$(CC) $(CCFLAGS) -c ./src/main.cpp -o $(BUILDIR)main.o

$(BUILDIR)CSortAlgorithm.o: ./src/CSortAlgorithm.h ./src/CSortAlgorithm.cpp
$(CC) $(CCFLAGS) -c ./src/CSortAlgorithm.cpp -o $(BUILDIR)CSortAlgorithm.o

$(BUILDIR)CBenchmark.o: ./src/CBenchmark.h ./src/CBenchmark.cpp
$(CC) $(CCFLAGS) -c -o $(BUILDIR)CBenchmark.o ./src/CBenchmark.cpp

$(BUILDIR)CTree.o: ./src/CTree.h ./src/CTree.cpp
$(CC) $(CCFLAGS) -c ./src/CTree.cpp -o $(BUILDIR)CTree.o

$(BUILDIR)console.o: ./src/console.h ./src/console.cpp
$(CC) $(CCFLAGS) -c ./src/console.cpp -o $(BUILDIR)console.o

$(BUILDIR)gtkgui.o: ./src/gtkgui.h ./src/gtkgui.cpp
$(CC) $(CCFLAGS) -c ./src/gtkgui.cpp -o $(BUILDIR)gtkgui.o

$(BUILDIR)gtkeventh.o: ./src/gtkeventh.h ./src/gtkeventh.cpp
$(CC) $(CCFLAGS) -c ./src/gtkeventh.cpp -o $(BUILDIR)gtkeventh.o



ich wusste auch nicht genau welches verzeichnis ich bei den Linker Optionen nehmen sollte, dashalb hab ich beide genommen:

-L/cygdrive/c/GTK/bin/ -L/cygdrive/c/GTK/lib/

in dem bin Verzeichnis sind die .dll dateien in

/lib sind .lib dateien und .a Dateien

Nun weis ich nicht genau welche er zum Linken braucht, aber wenn man beides angibt kann ja nicht schief gehen oder?

barton4
08-08-2008, 12:44
so es geht nun mit den parametern unter devc++. danke