Strona 1 z 1
[C++] OpenGL i GTK+
: 28 gru 2015, o 18:16
autor: pioter-b
Witam,
jetem użytkownikiem linuxa (Debian) i piszę aktualnie program wykorzystujący OpenGl i GTK., jednakże używam do tego też biblioteki gtkglarea.h i mam problem z kompilacją
Kod: Zaznacz cały
fatal error: gtkgl/gtkglarea.h: Nie ma takiego pliku ani katalogu
#include <gtkgl/gtkglarea.h>
Niestety dostaję coś takiego w terminalu. Pomimo przegldnięcia połowy internetu nie udało mi sie z tym poradzić.
Czy mógłby mi ktoś pomóc?
[C++] OpenGL i GTK+
: 28 gru 2015, o 18:45
autor: Afish
Pokaż całe polecenie kompilacji.
[C++] OpenGL i GTK+
: 28 gru 2015, o 19:12
autor: pioter-b
Kod: Zaznacz cały
gcc main.c -o moje `pkg-config --cflags gtk+-2.0` `pkg-config --libs gtk+-2.0` `pkg-config --cflags --libs gtkglext-1.0` -lglut -lgtkgl
[C++] OpenGL i GTK+
: 28 gru 2015, o 19:40
autor: Afish
Kiepsko szukałeś w Internecie:
A dokładniej opcja -I.
[C++] OpenGL i GTK+
: 28 gru 2015, o 23:57
autor: pioter-b
Kod: Zaznacz cały
gcc -I main.c -o moje `pkg-config --cflags gtk+-2.0` `pkg-config --libs gtk+-2.0` -lglut
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 0 has invalid symbol index 11
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 1 has invalid symbol index 12
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 2 has invalid symbol index 2
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 3 has invalid symbol index 2
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 4 has invalid symbol index 11
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 5 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 6 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 7 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 8 has invalid symbol index 12
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 9 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 10 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 11 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 12 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 13 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 14 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 15 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 16 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 17 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 18 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 19 has invalid symbol index 21
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_line): relocation 0 has invalid symbol index 2
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status
[C++] OpenGL i GTK+
: 29 gru 2015, o 08:11
autor: Afish
A funkcję main masz?
[C++] OpenGL i GTK+
: 29 gru 2015, o 10:39
autor: Dasio11
pioter-b pisze:Kod: Zaznacz cały
gcc -I main.c -o moje `pkg-config --cflags gtk+-2.0` `pkg-config --libs gtk+-2.0` -lglut
Zapewne ma funkcję
main, ale polecenie jest niepoprawnie napisane.
Opcja
-I kompilatora gcc służy do wskazywania, gdzie znajdują się pliki nagłówkowe, które załącza kod źródłowy programu.
W tym przypadku trzeba wskazać, gdzie jest katalog zawierający
gtkgl/gtkglarea.h, więc spróbuj tak:
Kod: Zaznacz cały
gcc main.c -o moje -I /X/Y `pkg-config --cflags gtk+-2.0` `pkg-config --libs gtk+-2.0` -lglut
Fragment
/X/Y zastąp przez ścieżkę do katalogu, w którym jest
gtkgl/gtkglarea.h. Jeśli na przykład
gtkglarea.h znajduje się w
/usr/local/include/gtkgl, to
/X/Y zastąp przez
/usr/local/include.
[C++] OpenGL i GTK+
: 29 gru 2015, o 16:12
autor: pioter-b
Ok dzięki wielkie na to zadziałało. Niestety mam kolejny problem bo po wpisaniu
Kod: Zaznacz cały
gcc -I /usr/local/include/gtkgl-2.0 main.c -o moje `pkg-config --cflags --libs gtk+-2.0 gtkglext-1.0 gdk-2.0 gdkglext-1.0 gtkgl-2.0` -lglut -lGL -lGLU -lXext -lX11 -lm
wychodzi
Kod: Zaznacz cały
/tmp/cc2tggLT.o: In function `glarea_expose':
main.c:(.text+0x123): undefined reference to `gtk_gl_area_begingl'
main.c:(.text+0x1ba): undefined reference to `gtk_gl_area_endgl'
main.c:(.text+0x1dc): undefined reference to `gtk_gl_area_swapbuffers'
/tmp/cc2tggLT.o: In function `glarea_configure':
main.c:(.text+0x212): undefined reference to `gtk_gl_area_begingl'
main.c:(.text+0x256): undefined reference to `gtk_gl_area_endgl'
collect2: error: ld returned 1 exit status
Wykorzystuje takie biblioteki
Kod: Zaznacz cały
#include <stdio.h>
#include <stdlib.h>
#include <gdk/gdk.h>
#include <gdk/gdkkeysyms.h>
#include <gtk/gtk.h>
#include <gtk/gtkwidget.h>
#include <gtkgl/gtkglarea.h>
#include <GL/gl.h>
#include <GL/glu.h>
[C++] OpenGL i GTK+
: 29 gru 2015, o 16:37
autor: Afish
Nie linkujesz odpowiedniej biblioteki:
... ngl.3.html
Poza tym te metody są przestarzałe, lepiej poszukaj nowszego źródła kodu.
[C++] OpenGL i GTK+
: 29 gru 2015, o 16:43
autor: pioter-b
Ogolnie niby znalazłem taki kod bo chce po prostu umiejscowić w okienku w GTK+ to co udało mi sie uzyskać w OpenGL. Szukałem w internecie jakiegoś przykładu zeby z niego sie jakoś nauczyć jak to działa lecz mam w ogole problem z kompilacją tego przykładu