OpenGL в FreeBSD: ошибки при компиляции

Тема в разделе "WASM.OpenGL", создана пользователем varnie, 16 сен 2007.

  1. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    привет, дружыщща!
    изучаю простенькие примеры OpenGL + SDL сорцов под FreeBSD, но не получается их скомпилять. все время линкер ругается следующим образом:
    т.е. такое ощущение что OpenGL либа все же линкером не подцепилась, т.к. OpenGL ф-ции линкер не распознает.
    подскажите, чтО проверить в первую очередь? большое спасибо.
     
  2. Voodoo

    Voodoo New Member

    Публикаций:
    0
    Регистрация:
    9 апр 2003
    Сообщения:
    297
    Адрес:
    Новосибирск
    глупость ляпнул...
     
  3. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Это компилятор ругается, а не линкер.

    "#include <GL/glut.h>" на месте?
     
  4. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    extern "C" {
    }
    используется?
     
  5. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    Quantum,
    да, glut.h имеется в /usr/X11R6/include/GL
    щас попробовал добавить #include <GL/glut.h>,
    ничего не изменилось.

    t00x,
    нет, не используется. примеры вообще оч. минималистичны.
     
  6. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    glBegin() принадлежит gl/opengl.h, также как и glVertex3f и glViewPort.

    а вообще текст в студию )
     
  7. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    вот примерчик:
    Код (Text):
    1. #include <SDL/SDL.h>
    2. #include <GL/gl.h>
    3. //#include <GL/glut.h>
    4.  
    5. #include <stdio.h>
    6. #include <stdlib.h>
    7.  
    8. int main()
    9. {
    10.     if ( SDL_Init(SDL_INIT_VIDEO) != 0 )
    11.     {
    12.         printf( "Error: %s\n", SDL_GetError() );
    13.         return 1;
    14.     }
    15.    
    16.     atexit( SDL_Quit );
    17.  
    18.     SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER,1);
    19.    
    20.     SDL_GL_SetAttribute(SDL_GL_RED_SIZE,5);
    21.     SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE,6);
    22.     SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE,5);
    23.  
    24.     if ( SDL_SetVideoMode(1024,768,32,SDL_OPENGL) == NULL )
    25.     {
    26.         printf( "Error: %s\n", SDL_GetError() );
    27.         return 1;
    28.     }
    29.  
    30.     SDL_WM_SetCaption("OpenGL with SDL!", "OpenGL" );
    31.  
    32.     glViewPort(80,0,480,480);
    33.     glMatrixMode(GL_PROJECTION);
    34.     glLoadIdentity();
    35.     glFrustum(-1.0,1.0,-1.0,1.0,1.0,100.0);
    36.     glClearColor(0,0,0,0);
    37.     glMatrixMode(GL_MODELVIEW);
    38.     glLoadIdentity();
    39.     glClear(GL_COLOR_BUFFER_BIT);
    40.     glBegin(GL_TRIANGLES);
    41.         glColor3f(1.0,0,0);
    42.         glVertex3f(0.0,1.0,-2.0);
    43.         glColor3f(0,1.0,0);
    44.         glVertex3f(1.0,-1.0,-2.0);
    45.         glColor3f(0,0,1.0);
    46.         glVertex3f(-1.0,-1.0,-2.0);
    47.     glEnd();
    48.     glFlush();
    49.  
    50.     printf( "OKEY!\n");
    51.  
    52.     SDL_GL_SwapBuffers();
    53.    
    54.     SDL_Delay(5000);
    55.  
    56.     return 0;
    57. }
     
  8. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    библиотеки или заголовки для gl не находит
     
  9. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    t00x
    GL/, а не gl/.
    У меня эти функции обьявлены в GL/gl.h и никакого opengl.h и близко нет. Поэтому инклудить нужно glut.h, который в свою очередь подключит необходимые хидеры.

    Заголовки, а не библиотеки, как я уже писал выше.
     
  10. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    сейчас на др. фрибзд на др. машине попробовал, те же ерроры.
    может быть нужно opengl либы отдельно доставлять?

    добавлено: дружыщща, подскажите какие либы в первую очередь проверить? а то может чего-то нехватает..
     
  11. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    сейчас попробовал следующий код:

    Код (Text):
    1. #include <GL/gl.h>
    2.  
    3. int main (int argc, char **argv)
    4. {
    5.     void *fun = (void *) glBegin;
    6.     printf ("glBegin is %p\n", fun);
    7.     return 0;
    8. }
    компилю. выводит:
    далее пытаюсь сделать то же самое но для ф-ции glViewPort:
    Код (Text):
    1. #include <GL/gl.h>
    2.  
    3. int main (int argc, char **argv)
    4. {
    5.     void *fun = (void *) glViewPort;
    6.     printf ("glViewPort is %p\n", fun);
    7.     return 0;
    8. }
    и не компилицца, выдает:
    так в каком хидере эта glViewPort ?
     
  12. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    сейчас пинаться будете, но я все выяснил:)) я вместо glViewport писал glViewPort, и никто не заметил на глаз.
    извиняюсь за причиненное беспокойство!
     
  13. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    varnie
    Думаю, что заметили многие, но эта мелочь не связана с ошибками в первом посте. Поэтому никто не обратил на неё внимания.