[C++] OpenGL i GTK+

pioter-b
Użytkownik
Użytkownik
Posty: 19
Rejestracja: 28 gru 2015, o 18:09
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 2 razy

[C++] OpenGL i GTK+

Post 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?
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[C++] OpenGL i GTK+

Post autor: Afish »

Pokaż całe polecenie kompilacji.
pioter-b
Użytkownik
Użytkownik
Posty: 19
Rejestracja: 28 gru 2015, o 18:09
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 2 razy

[C++] OpenGL i GTK+

Post 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
Ostatnio zmieniony 28 gru 2015, o 19:36 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[C++] OpenGL i GTK+

Post autor: Afish »

Kiepsko szukałeś w Internecie:
A dokładniej opcja -I.
pioter-b
Użytkownik
Użytkownik
Posty: 19
Rejestracja: 28 gru 2015, o 18:09
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 2 razy

[C++] OpenGL i GTK+

Post 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
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[C++] OpenGL i GTK+

Post autor: Afish »

A funkcję main masz?
Awatar użytkownika
Dasio11
Moderator
Moderator
Posty: 10211
Rejestracja: 21 kwie 2009, o 19:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 40 razy
Pomógł: 2359 razy

[C++] OpenGL i GTK+

Post 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.
pioter-b
Użytkownik
Użytkownik
Posty: 19
Rejestracja: 28 gru 2015, o 18:09
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 2 razy

[C++] OpenGL i GTK+

Post 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>
Ostatnio zmieniony 29 gru 2015, o 16:37 przez pioter-b, łącznie zmieniany 1 raz.
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[C++] OpenGL i GTK+

Post autor: Afish »

Nie linkujesz odpowiedniej biblioteki:
... ngl.3.html
Poza tym te metody są przestarzałe, lepiej poszukaj nowszego źródła kodu.
pioter-b
Użytkownik
Użytkownik
Posty: 19
Rejestracja: 28 gru 2015, o 18:09
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 2 razy

[C++] OpenGL i GTK+

Post 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
ODPOWIEDZ