kleine update:
ik heb het laatste developmentpakket van Glade for Windows gedownload en geinstalleerd, maar hoe krijg ik die nu in Eclipse (of Dev C++) aan de praat?
ik heb geprobeerd het compiler commando in Eclipse als volgt in te stellen:
code:
1
| gcc `pkg-config --cflags --libs gtk+-2.0` |
maar dat resulteert in de output:
code:
1
2
3
4
5
6
7
| mingw32-make -f makefile all
'Building file: ../main.c'
'Invoking: GCC C Compiler'
gcc `pkg-config --cflags --libs gtk+-2.0` -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"main.d" -MT"main.d" -o"main.o" "../main.c"
gcc: cannot specify -o with -c or -S and multiple compilations
mingw32-make: *** [main.o] Error 1
Build complete for project HelloLaptop |
dit wordt veroorzaakt doordat
pkg-config ... een fout veroorzaakt, wat natuurlijk in een ongeldig gcc commando resulteert.
ik heb
include en
lib uit
C:\Program Files\Common Files\GTK\2.0 verplaatst naar
C:\gtkdev en
C:\gtkdev\lib\pkgconfig in
PKG_CONFIG_PATH gezet.
nu heb ik ook de mappen bin, share, en etc gekopieerd
dit levert al de iets acceptabelere pkg-config output:
code:
1
| -mms-bitfields -IC:/gtkdev/include/gtk-2.0 -IC:/gtkdev/lib/gtk-2.0/include -IC:/gtkdev/include/atk-1.0 -IC:/gtkdev/include/cairo -IC:/gtkdev/include/pango-1.0 -IC:/gtkdev/include/glib-2.0 -IC:/gtkdev/lib/glib-2.0/include -IC:/gtkdev/include/freetype2 -IC:/gtkdev/include -user32 -Wl,-luuid -LC:/gtkdev/lib -lgtk-win32-2.0 -lgdk-win32-2.0 -lgdi32 -limm32 -lshell32 -lole32 -latk-1.0 -lgdk_pixbuf-2.0 -lpangowin32-1.0 -lpangocairo-1.0 -lcairo -lpangoft2-1.0 -lfontconfig -lfreetype -lz -lpango-1.0 -lm -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lintl -liconv |
maar de output van eclipse blijft gelijk (vermoedelijk kent windows die backtick-constructie niet?). als ik
`pkg-config ...` handmatig vervang door de bovenstaande output, krijg ik weer deze output:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| gcc: -luuid: linker input file unused because linking not done
gcc: -lgtk-win32-2.0: linker input file unused because linking not done
gcc: -lgdk-win32-2.0: linker input file unused because linking not done
gcc: -lgdi32: linker input file unused because linking not done
gcc: -limm32: linker input file unused because linking not done
gcc: -lshell32: linker input file unused because linking not done
gcc: -lole32: linker input file unused because linking not done
gcc: -latk-1.0: linker input file unused because linking not done
gcc: -lgdk_pixbuf-2.0: linker input file unused because linking not done
gcc: -lpangowin32-1.0: linker input file unused because linking not done
gcc: -lpangocairo-1.0: linker input file unused because linking not done
gcc: -lcairo: linker input file unused because linking not done
gcc: -lpangoft2-1.0: linker input file unused because linking not done
gcc: -lfontconfig: linker input file unused because linking not done
gcc: -lfreetype: linker input file unused because linking not done
gcc: -lz: linker input file unused because linking not done
gcc: -lpango-1.0: linker input file unused because linking not done
gcc: -lm: linker input file unused because linking not done
gcc: -lgobject-2.0: linker input file unused because linking not done
gcc: -lgmodule-2.0: linker input file unused because linking not done
gcc: -lglib-2.0: linker input file unused because linking not done
gcc: -lintl: linker input file unused because linking not done
gcc: -liconv: linker input file unused because linking not done |
al die libraries, ik snap er geen snars van
update:
Ik heb gevonden dat deze fouten veroorzaakt worden doordat ik libraries aan de compiler zit te geven. deze heb ik nu netjes overgezet naar de linker. nu krijg ik het volgende
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
| **** Build of configuration Debug for project HelloLaptop ****
mingw32-make -f makefile all
'Building target: HelloLaptop.exe'
'Invoking: GCC C Linker'
gcc -luuid -LC:/gtkdev/lib -lgtk-win32-2.0 -lgdk-win32-2.0 -lgdi32 -limm32 -lshell32 -lole32 -latk-1.0 -lgdk_pixbuf-2.0 -lpangowin32-1.0 -lpangocairo-1.0 -lcairo -lpangoft2-1.0 -lfontconfig -lfreetype -lz -lpango-1.0 -lm -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lintl -liconv -o"HelloLaptop.exe" ./main.o
./main.o(.text+0xf): In function `g_win32_get_system_data_dirs':
C:/gtkdev/include/glib-2.0/glib/gutils.h:139: undefined reference to `g_win32_get_system_data_dirs_for_module'
./main.o(.text+0x34): In function `hello':
D:/Programmeren/Eclipse/HelloLaptop/Debug/../main.c:7: undefined reference to `g_print'
./main.o(.text+0x63): In function `delete_event':
D:/Programmeren/Eclipse/HelloLaptop/Debug/../main.c:19: undefined reference to `g_print'
./main.o(.text+0x78): In function `destroy':
D:/Programmeren/Eclipse/HelloLaptop/Debug/../main.c:30: undefined reference to `gtk_main_quit'
./main.o(.text+0xda): In function `main':
D:/Programmeren/Eclipse/HelloLaptop/Debug/../main.c:41: undefined reference to `gtk_init_abi_check'
./main.o(.text+0xe7):D:/Programmeren/Eclipse/HelloLaptop/Debug/../main.c:44: undefined reference to `gtk_window_new'
./main.o(.text+0x10d):D:/Programmeren/Eclipse/HelloLaptop/Debug/../main.c:52: undefined reference to `g_type_check_instance_cast'
./main.o(.text+0x116):D:/Programmeren/Eclipse/HelloLaptop/Debug/../main.c:52: undefined reference to `g_signal_connect_data'
./main.o(.text+0x139):D:/Programmeren/Eclipse/HelloLaptop/Debug/../main.c:58: undefined reference to `g_type_check_instance_cast'
./main.o(.text+0x142):D:/Programmeren/Eclipse/HelloLaptop/Debug/../main.c:58: undefined reference to `g_signal_connect_data'
./main.o(.text+0x155):D:/Programmeren/Eclipse/HelloLaptop/Debug/../main.c:61: undefined reference to `gtk_container_get_type'
./main.o(.text+0x161):D:/Programmeren/Eclipse/HelloLaptop/Debug/../main.c:61: undefined reference to `g_type_check_instance_cast'
./main.o(.text+0x16a):D:/Programmeren/Eclipse/HelloLaptop/Debug/../main.c:61: undefined reference to `gtk_container_set_border_width'
./main.o(.text+0x17a):D:/Programmeren/Eclipse/HelloLaptop/Debug/../main.c:64: undefined reference to `gtk_button_new_with_label'
./main.o(.text+0x1a0):D:/Programmeren/Eclipse/HelloLaptop/Debug/../main.c:70: undefined reference to `g_type_check_instance_cast'
./main.o(.text+0x1a9):D:/Programmeren/Eclipse/HelloLaptop/Debug/../main.c:70: undefined reference to `g_signal_connect_data'
./main.o(.text+0x1c0):D:/Programmeren/Eclipse/HelloLaptop/Debug/../main.c:77: undefined reference to `g_type_check_instance_cast'
./main.o(.text+0x1c9):D:/Programmeren/Eclipse/HelloLaptop/Debug/../main.c:77: undefined reference to `gtk_widget_destroy'
./main.o(.text+0x1db):D:/Programmeren/Eclipse/HelloLaptop/Debug/../main.c:77: undefined reference to `g_type_check_instance_cast'
./main.o(.text+0x1e4):D:/Programmeren/Eclipse/HelloLaptop/Debug/../main.c:77: undefined reference to `g_signal_connect_data'
./main.o(.text+0x1f8):D:/Programmeren/Eclipse/HelloLaptop/Debug/../main.c:80: undefined reference to `gtk_container_get_type'
./main.o(.text+0x204):D:/Programmeren/Eclipse/HelloLaptop/Debug/../main.c:80: undefined reference to `g_type_check_instance_cast'
./main.o(.text+0x20d):D:/Programmeren/Eclipse/HelloLaptop/Debug/../main.c:80: undefined reference to `gtk_container_add'
./main.o(.text+0x21b):D:/Programmeren/Eclipse/HelloLaptop/Debug/../main.c:83: undefined reference to `gtk_widget_show'
./main.o(.text+0x229):D:/Programmeren/Eclipse/HelloLaptop/Debug/../main.c:86: undefined reference to `gtk_widget_show'
./main.o(.text+0x231):D:/Programmeren/Eclipse/HelloLaptop/Debug/../main.c:91: undefined reference to `gtk_main'
mingw32-make: *** [HelloLaptop.exe] Error 1
Build complete for project HelloLaptop |
hij kan dus op de een of andere manier de libraries niet vinden
update: eindelijk, ik heb hem foutloos gecompileerd gekregen, maar als ik het programma uitvoer krijg ik een lege dosbox en een messagebox:
Kan entrypoint van procedure g_win32_get_system_data_dirs_for_module niet vinden in DLL-bestand libglib-2.0-0.dll
de code is de standaard GTK hello world
http://www.gtk.org/tutorial/c39.html#SEC-HELLOWORLD
update: hij draait nu, maar alleen als ik de DLL's uit C:\GTK\bin naar mijn programmamap kopieer. Windows kan ze dus blijkbaar niet vinden. Dan heb ik ook nog een ander probleempje. bij het opstarten krijg ik de melding:
(HelloLaptop.exe:4776): Pango-WARNING **: _pango_cairo_font_install called withbad font, expect ugly output
met als resultaat dat "Hello World" als "□□□□□□□□□□□" weergegeven wordt
mijn collega die alleen de nieuwste GTK runtime heeft, kan het programma zonder problemen draaien (hij hoeft ook geen DLL's te kopieren). als ik de installer van de GIMP site draai, zegt hij dat GTK al geinstalleerd is (wat dus klopt)
[
Voor 50% gewijzigd door
2playgames op 24-04-2007 10:50
]