Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Компиляция простой программы. Ошибки glu.h  (Прочитано 4245 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Intrepid

  • Автор темы
  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Доброго времени суток.
собственно проблема такая.
Есть простая программа под OpenGL:
#include <GL/glut.h>
 
void display()
{
    glClear(GL_COLOR_BUFFER_BIT);
 
    glBegin(GL_POINTS);
        glColor3f(0.0, 0.0, 0.0);
        glVertex2f(0.25, 0.25);
    glEnd;
    glFlush();
}
 
int main(int argc, char **argv)
{
    glutInit(&argc, argv);
 
    glutInitWindowSize(240, 240);
    glutInitWindowPosition(100, 100);
 
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutCreateWindow("Test");
 
    glClearColor(0, 0, 0, 0);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
    glutDisplayFunc(display);
    glutMainLoop();
    return 0;
}

При компиляции компилятор вываливает кучу однотипных ошибок в glu.h

/usr/include/GL/glu.h:326: error: ‘GLint’ has not been declared
/usr/include/GL/glu.h:326: error: ‘GLdouble’ has not been declared
/usr/include/GL/glu.h:326: error: ‘GLdouble’ has not been declared
/usr/include/GL/glu.h:327: error: variable or field ‘gluPerspective’ declared void
/usr/include/GL/glu.h:327: error: ‘GLdouble’ was not declared in this scope
/usr/include/GL/glu.h:327: error: ‘GLdouble’ was not declared in this scope
/usr/include/GL/glu.h:327: error: ‘GLdouble’ was not declared in this scope
/usr/include/GL/glu.h:327: error: ‘GLdouble’ was not declared in this scope
/usr/include/GL/glu.h:328: error: variable or field ‘gluPickMatrix’ declared void
/usr/include/GL/glu.h:328: error: ‘GLdouble’ was not declared in this scope
/usr/include/GL/glu.h:328: error: ‘GLdouble’ was not declared in this scope
/usr/include/GL/glu.h:328: error: ‘GLdouble’ was not declared in this scope
/usr/include/GL/glu.h:328: error: ‘GLdouble’ was not declared in this scope
/usr/include/GL/glu.h:328: error: ‘GLint’ was not declared in this scope
/usr/include/GL/glu.h:328: error: ‘viewport’ was not declared in this scope
/usr/include/GL/glu.h:329: error: ‘GLint’ does not name a type
/usr/include/GL/glu.h:330: error: ‘GLint’ has not been declared
/usr/include/GL/glu.h:330: error: ‘GLfloat’ has not been declared
/usr/include/GL/glu.h:330: error: ‘GLint’ has not been declared
/usr/include/GL/glu.h:330: error: ‘GLenum’ has not been declared
/usr/include/GL/glu.h:331: error: ‘GLenum’ has not been declared
/usr/include/GL/glu.h:332: error: ‘GLenum’ has not been declared

В системе установлено ,по моему, все что только можно: glutg3, libglut3-dev, SDL, mesa
mishaq@mishaq-laptop:~$ glxinfo|grep "OpenGL version"
OpenGL version string: 2.1 Mesa 7.6
Пробовал разные среды - результат один. Гугл на результат ошибки ничего не сказал.
Система ubuntu 10.04 x86_64

Оффлайн Упс

  • Старожил
  • *
  • Сообщений: 3231
    • Просмотр профиля
Цитировать
При компиляции компилятор вываливает кучу однотипных ошибок в glu.h
И как компелируем?
Библиотеки конечно же подключил? (тонкий намёк :) )
xUbuntu 12.04

Оффлайн VestniK

  • Активист
  • *
  • Сообщений: 594
    • Просмотр профиля
Цитировать
Библиотеки конечно же подключил?
Вообще-то вышеприведённые ошибки, это ошибки компилятора а не линкера, так что дело скорей всего не в этом. Подозреваю, что приведённый список ошибок не полон, а первой ошибкой на самом деле было что-то в духе "GL/gl.h not found". Посмотрел по пакетам: gl.h идёт в mesa-common-dev, а glu.h в libglu1-mesa-dev и второй от первого не зависит (по крайней мере на прямую дальше apt-cache depends libglu1-mesa-dev я не копал).

vidyuk@peti-laptop:~/Development/test/tmp$ g++ main.cpp -o test -Wall -lGL -lGLU -lglut
main.cpp: In function ‘void display()’:
main.cpp:10: warning: statement is a reference, not call, to function ‘glEnd’
main.cpp:10: warning: statement has no effect
Всё собралось, а после фикса вышеуказанного очень и очень важного warning'а даже заработало.

Оффлайн Intrepid

  • Автор темы
  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Начало безобразия:
mishaq@mishaq-laptop:~/GL$ g++ main.c -o test -Wall -lGL -lGLU -lglut
In file included from /usr/include/GL/freeglut_std.h:115,
                 from /usr/include/GL/glut.h:17,
                 from main.c:1:
/usr/include/GL/glu.h:293: error: ‘GLint’ does not name a type
In file included from /usr/include/GL/freeglut_std.h:115,
                 from /usr/include/GL/glut.h:17,
                 from main.c:1:
/usr/include/GL/glu.h:294: error: ‘GLint’ does not name a type
/usr/include/GL/glu.h:295: error: ‘GLint’ does not name a type
Странно, но gl.h пустой. mesa-common-dev стоит, libglu1-mesa-dev тоже

Оффлайн VestniK

  • Активист
  • *
  • Сообщений: 594
    • Просмотр профиля
Попробуй переустановить mesa-common-dev в таком случае.
Цитировать
sudo aptitude purge mesa-common-dev
sudo aptitude clean
sudo aptitude install mesa-common-dev
Если после этого он всё ещё пуст, наверно стоит сменить зеркало.

Оффлайн Intrepid

  • Автор темы
  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Вроде получилось. Переустановка mesa-common-dev помогла.
Правда команда sudo aptitude purge mesa-common-dev попыталась поставить драйвера от nvidia на мо ati (пришлось переустанавливать), так что я не уверен былали проблема в mesa или в драйвере карты. В любом случае большое спасибо :)

 

Страница сгенерирована за 0.017 секунд. Запросов: 22.