Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problemy z GLUT.

Ostatnio zmodyfikowano 2011-04-13 16:23
Autor Wiadomość
blojayble
Temat założony przez niniejszego użytkownika
Problemy z GLUT.
» 2011-04-10 21:16:57
Na początku chciałbym przywitać serdecznie wszystkich użytkowników. :)

Mam pewien, często spotykany problem związany z nauką openGL. Od pewnego czasu uczę się c++ i chciałbym poszerzyć swoją wiedzę o obsługę biblioteki graficznej jaką jest openGL. Zacząłem od kursu znajdującego się na tej stronie Pana Janusza Ganczarskiego. Próbowałem w różnych środowiskach programistycznych i zdecydowałem się na Code::Blocks.

Ściągnąłem bibliotekę GLUT, aby móc kompilować przykłady, jednakże już na samym początku zostałem zasypany masą błędów kompilatora. Szukałem pomocy i znajdowałem błędy, wpisywałem frazy do kompilatora i powoli zaczęło się przerzedzać w Bulid messages jednakże nie mogę zlikwidować pewnych błędów. Jest to undefinied reference. Odnosi się do każdej użytej funkcji.

Oto i owy kod:

C/C++
/*
(c) Janusz Ganczarski (Power)
http://www.januszg.hg.pl
JanuszG(małpeczka)enter.net.pl
*/

#include <GL/glut.h>
#include <stdlib.h>

// funkcja generująca scenę 3D

void Display()
{
    // kolor tła - zawartość bufora koloru
    glClearColor( 1.0, 1.0, 1.0, 1.0 );
   
    // czyszczenie bufora koloru
    glClear( GL_COLOR_BUFFER_BIT );
   
    // kolor kwadratu
    glColor3f( 1.0, 0.0, 0.0 );
   
    // początek definicji wielokąta
    glBegin( GL_POLYGON );
   
    // kolejne wierzchołki wielokąta
    glVertex3f( 0.0, 0.0, 0.0 );
    glVertex3f( 0.0, 1.0, 0.0 );
    glVertex3f( 1.0, 1.0, 0.0 );
    glVertex3f( 1.0, 0.0, 0.0 );
   
    // koniec definicji prymitywu
    glEnd();
   
    // skierowanie poleceń do wykonania
    glFlush();
   
    // zamiana buforów koloru
    glutSwapBuffers();
}

// zmiana wielkości okna

void Reshape( int width, int height )
{
    // generowanie sceny 3D
    Display();
}

// stałe do obsługi menu podręcznego

enum
{
    EXIT // wyjście
};

// obsługa menu podręcznego

void Menu( int value )
{
    switch( value )
    {
        // wyjście
    case EXIT:
        exit( 0 );
    }
}

int main( int argc, char * argv[] )
{
    // inicjalizacja biblioteki GLUT
    glutInit( & argc, argv );
   
    // inicjalizacja bufora ramki
    glutInitDisplayMode( GLUT_DOUBLE | GLUT_RGB );
   
    // rozmiary głównego okna programu
    glutInitWindowSize( 400, 400 );
   
    // utworzenie głównego okna programu
    glutCreateWindow( "Kwadrat 1" );
   
    // dołączenie funkcji generującej scenę 3D
    glutDisplayFunc( Display );
   
    // dołączenie funkcji wywoływanej przy zmianie rozmiaru okna
    glutReshapeFunc( Reshape );
   
    // utworzenie menu podręcznego
    glutCreateMenu( Menu );
   
    // dodatnie pozycji do menu podręcznego
    #ifdef WIN32
   
    glutAddMenuEntry( "Wyjście", EXIT );
    #else
   
    glutAddMenuEntry( "Wyjscie", EXIT );
    #endif
   
    // określenie przycisku myszki obsługującej menu podręczne
    glutAttachMenu( GLUT_RIGHT_BUTTON );
   
    // wprowadzenie programu do obsługi pętli komunikatów
    glutMainLoop();
    return 0;
}



Z góry dziękuję za pomoc i pozdrawiam jeszcze raz.
P-30582
DejaVu
» 2011-04-10 21:48:32
Ołkej ziom :P wklej nam błędy, a będziemy Ci radzić :) Z wróżenia nie jesteśmy najlepsi :)
P-30584
blojayble
Temat założony przez niniejszego użytkownika
» 2011-04-10 21:59:05

obj\Debug\main.o(.text+0x2a)||In function `Z7Displayv':|
C:\Documents and Settings\Zolw\Pulpit\New World\new\main.cpp|15|undefined reference to `_imp__glClearColor'|
obj\Debug\main.o(.text+0x38):C:\Documents and Settings\Zolw\Pulpit\New World\new\main.cpp|18|undefined reference to `_imp__glClear'|
obj\Debug\main.o(.text+0x59):C:\Documents and Settings\Zolw\Pulpit\New World\new\main.cpp|21|undefined reference to `_imp__glColor3f'|
obj\Debug\main.o(.text+0x67):C:\Documents and Settings\Zolw\Pulpit\New World\new\main.cpp|24|undefined reference to `_imp__glBegin'|
obj\Debug\main.o(.text+0x88):C:\Documents and Settings\Zolw\Pulpit\New World\new\main.cpp|27|undefined reference to `_imp__glVertex3f'|
obj\Debug\main.o(.text+0xa9):C:\Documents and Settings\Zolw\Pulpit\New World\new\main.cpp|28|undefined reference to `_imp__glVertex3f'|
obj\Debug\main.o(.text+0xca):C:\Documents and Settings\Zolw\Pulpit\New World\new\main.cpp|29|undefined reference to `_imp__glVertex3f'|
obj\Debug\main.o(.text+0xeb):C:\Documents and Settings\Zolw\Pulpit\New World\new\main.cpp|30|undefined reference to `_imp__glVertex3f'|
obj\Debug\main.o(.text+0xf2):C:\Documents and Settings\Zolw\Pulpit\New World\new\main.cpp|33|undefined reference to `_imp__glEnd'|
obj\Debug\main.o(.text+0xf9):C:\Documents and Settings\Zolw\Pulpit\New World\new\main.cpp|36|undefined reference to `_imp__glFlush'|
||=== Build finished: 10 errors, 0 warnings ===|

Proszę. :)

Ale powiedziałem przecież jakie błędy mam "[...] jednakże nie mogę zlikwidować pewnych błędów. Jest to undefinied reference. Odnosi się do każdej użytej funkcji. "

Jak widać chyba się źle wysłowiłem. ;)

OK, my bad, nie powiedziałem że w błędach jest przedrostek _imp__ przed owymi funkcjami. Więc mogło by to być źle zinterpretowane.
P-30585
DejaVu
» 2011-04-10 22:24:46
-lopengl32 -lglu32 -lglut32 add that line to your gcc invokation, and make sure the .libs are in the right places.
Źródło: http://archive.atomicmpc.com.au/forums.asp?s=2&c=10&t=1279
P-30588
blojayble
Temat założony przez niniejszego użytkownika
» 2011-04-11 16:47:35
W Bulid options -> linker settings mam te biblioteki.

Wyskakuje mi:

ld.exe||cannot find -l-lopengl32 -lglu32 -lglut32|

Rozumiem że nie może znaleźć tych bibliotek, gdzie one powinny być, aby nie wyskakiwały błędy?
P-30608
malan
» 2011-04-11 22:17:21
A gdzie je wypakowałeś? Tzn. gdzie masz całą bibliotekę?
P-30642
blojayble
Temat założony przez niniejszego użytkownika
» 2011-04-13 16:23:27
Ok, już nie ważne.
P-30700
« 1 »
  Strona 1 z 1