Модераторы: Rickert
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Программа на openGL, не компилится, как побороть? 
:(
    Опции темы
Artefact
Дата 28.2.2008, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 18.2.2008

Репутация: нет
Всего: нет



Паралелльно с С++ стал изучать OpenGL, купил книгу "OpenGL суперкнига", все понятно по началу. Но при попытки скомпилировать первый пример я получаю кучу ошибок:
Цитата

g++ wer.cpp -o wer -lGLU -lGL -lXext -lX11 -lm
wer.cpp:1:20: error: OpenGL.h: No such file or directory
wer.cpp: In function ‘void RenderScene()’:
wer.cpp:5: ошибка: нет декларации ‘GL_COLOR_BUFFER_BIT’ в этой области видимости
wer.cpp:5: ошибка: нет декларации ‘glClear’ в этой области видимости
wer.cpp:6: ошибка: нет декларации ‘glFlush’ в этой области видимости
wer.cpp: In function ‘void SetupRC()’:
wer.cpp:10: ошибка: нет декларации ‘glClearColor’ в этой области видимости
wer.cpp: At global scope:
wer.cpp:12: ошибка: ‘::main’ must return ‘int’
wer.cpp: In function ‘int main()’:
wer.cpp:14: ошибка: нет декларации ‘GLUT_SINGLE’ в этой области видимости
wer.cpp:14: ошибка: нет декларации ‘GLUT_RGB’ в этой области видимости
wer.cpp:14: ошибка: нет декларации ‘glutInitDisplayMode’ в этой области видимости
wer.cpp:15: ошибка: нет декларации ‘glutCreateWindow’ в этой области видимости
wer.cpp:16: ошибка: нет декларации ‘glutDisplayFunc’ в этой области видимости
wer.cpp:18: ошибка: нет декларации ‘glutMainLoop’ в этой области видимости


Сам код примера SIMPLE здесь:
Код

#include <OpenGL.h>

void RenderScene(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glFlush();
}
void SetupRC(void)
{
glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
}
void main (void)
{
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutCreateWindow("Simple");
glutDisplayFunc(RenderScene);
SetupRC();
glutMainLoop();
}


Автор книги предупреждал что все примеры написаны на Си, а не на С++. Но почему не находится хотя бы тот же самый OpenGL.h ? Glut-3.7  я поставил с прилагающегося диска.  smile 

Это сообщение отредактировал(а) Artefact - 28.2.2008, 23:05
PM MAIL   Вверх
vinter
Дата 28.2.2008, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: нет
Всего: 56



в зависимости от ОС должна быть подключен хидер этой ОС. Например для windows, подключи windows.h до подключения хидеров openGL


--------------------
Мой блог
PM MAIL WWW   Вверх
Artefact
Дата 29.2.2008, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 18.2.2008

Репутация: нет
Всего: нет



Я работаю в линуксе, точнее ubuntu. И какой тогда получается нужен хидер? smile 

Это сообщение отредактировал(а) Artefact - 29.2.2008, 00:17
PM MAIL   Вверх
vinter
Дата 29.2.2008, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: нет
Всего: 56



судя по всему в linux должно быть все нормально и без лишних хидеров, а что у тебя за хидер #include <OpenGL.h>  такой?


--------------------
Мой блог
PM MAIL WWW   Вверх
Artefact
Дата 29.2.2008, 00:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 18.2.2008

Репутация: нет
Всего: нет



Это взято из примера книги, в точь в точь перепечатал. Он включает заголовки gl.h и glut.h, вводящие прототипы функций. Может нужно gl.h и glut.h поместить в одну папку, где у меня лежит код? smile 
PM MAIL   Вверх
nickless
Дата 29.2.2008, 01:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: нет
Всего: 181



Цитата(Artefact @  28.2.2008,  21:04 Найти цитируемый пост)
Но почему не находится хотя бы тот же самый OpenGL.h

Может его просто нет? smile 
Код

find / -iname opengl.h

?

Код

#include <gl.h>
#include <glut.h>

void RenderScene(void)
{
    glClear(GL_COLOR_BUFFER_BIT);
    glFlush();
}

void SetupRC(void)
{
    glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
}

int main (int argc, char ** argv)
{
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInit(&argc, argv);
    glutCreateWindow("Simple");
    glutDisplayFunc(RenderScene);
    SetupRC();
    glutMainLoop();
}


Код

g++ bla.cpp -o bla -I/usr/include/GL -lglut -lGL


У NeHe есть серия хороших уроков по OpenGL, с примерами (в том числе) под линукс.


P.S.
Цитата(Artefact @  28.2.2008,  21:04 Найти цитируемый пост)
wer.cpp:12: ошибка: ‘::main’ must return ‘int’

Выкинь книгу



--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
Artefact
Дата 29.2.2008, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 18.2.2008

Репутация: нет
Всего: нет



nickless, мне уже стыдно что создал тему. smile  Книгу почитал дальше и понял, что она плохо составлена. Отдал ее знакомому. smile  
Цитата

#include <gl.h>
#include <glut.h>

gl.h нет. Но ничего, найду решение.
PM MAIL   Вверх
Rickert
Дата 4.3.2008, 05:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 6
Всего: 52



Artefact, значит у тебя элемнтарно не стоит библиотеки OGL'а smile


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Brain
Дата 2.9.2008, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 10.12.2006
Где: Россия, Новочерка сск

Репутация: нет
Всего: нет



Новую тему решил не создавать, так что пишу здесь...
Скачал с http://nehe.gamedev.net/   basecode под линь.
Попытался скомпилить в eclipse, не получилось(он не знал что такое XF86VidModeModeInfo), долго мучался прилось поставить

sudo aptitude install libxxf86vm1 libxxf86vm-dev

Но теперь он у меня не видит функцию XOpenDisplay;

Люди подскажите что не так...

PS: С помощью Makefile который в архиве все компилится нормально... 

PM MAIL ICQ   Вверх
Rickert
Дата 3.9.2008, 03:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 6
Всего: 52



Ищи гуглом в англоязычной части инета. Ответы по части разработки под линуксом в 99% случаев только там.  У наснарод не особо кодит под *n?x ОСями.
Функция XOpenDisplay относится к библиотеке XLib. Ты её подключал? В makefile указывал либу для компиляции?


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Brain
Дата 3.9.2008, 08:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 10.12.2006
Где: Россия, Новочерка сск

Репутация: нет
Всего: нет



Да, подключал.
Но проблема еще тем непонятна, что CodeAssistant(автодописывание) видит эту функцию, а вот компилятор нет О_о.
Makefile'ом пользоваться особо не умею, у меня проект manage makefile project, он сам разве не делает?


В makefile из архива есть какаято непонятка:
Код

#Makefile for GLX_BASE

PROJECT= glx_base
SOURCES= glx_base.c main.c
OBJECTS= glx_base.o main.o
CC= gcc

    
$(PROJECT): $(OBJECTS)
    $(CC) -O2 -g $(OBJECTS) -L/usr/X11R6/lib -lm -lGL -lXxf86vm -o $(PROJECT)
    @echo Compilation Complete

$(OBJECTS): $(SOURCES)
    @echo Compiling Sources
    $(CC) -O2 -Wall -ansi -pedantic -g -c $(SOURCES)

clean:
    @echo Deleting up $(OBJECTS) $(PROJECT)
    rm -f *.o;rm $(PROJECT)


Меня здесь напрягает строка
    $(CC) -O2 -g $(OBJECTS) -L/usr/X11R6/lib -lm -lGL -lXxf86vm -o $(PROJECT)
У мну в /usr/X11R6/lib ниче нет кроме пустой папки nvidia и все. Хотя с этого makefile'а все компилится.


Это сообщение отредактировал(а) Brain - 3.9.2008, 08:19
PM MAIL ICQ   Вверх
Rickert
Дата 3.9.2008, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 6
Всего: 52



Brain, в этом всё и дело. Найди где у тебя лижат либы, вставь в перечисление необходимые и компиль. Вообще, в юникс, разработка под какими-либо визуальными компиляторами - дело тухлое. Фигни насуют в makefile и сам ничего понимать не будешь.
"Вперёд! В рукопашную!" smile 

Это сообщение отредактировал(а) Rickert - 3.9.2008, 10:01


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Brain
Дата 3.9.2008, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 10.12.2006
Где: Россия, Новочерка сск

Репутация: нет
Всего: нет



Rickert, в eclipse есть возможность проекта со своим makefile'ом, я думаю переписать проект под него...
Получится - отпишусь...
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование игр, графики и искуственного интеллекта"
Rickert

НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.

  • Литературу, связанную с программированием графики, обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы связанные с программированием графики и мультимедии на языках С++ и Delphi
  • Вопросы по реализации алгоритмов рассматриваются здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема »


 




[ Время генерации скрипта: 0.0887 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.