Проект с OpenGL. |
Здравствуйте, гость ( Вход | Регистрация )
Проект с OpenGL. |
alsav22 |
29.11.2012, 3:37
Сообщение
#1
|
Студент Группа: Участник Сообщений: 23 Регистрация: 6.5.2012 Пользователь №: 3365 Спасибо сказали: 0 раз(а) Репутация: 0 |
Попробовал собрать проект "OGLPyramid" к 23 главе книги: "Макс Шлее Qt4.5.Профессиональноепрограммирование на C++ (2010)". Проект с использованием OpenGL. Собираю в Студии 2010. Другие проекты делал в Студии без особых проблем. При компиляции компоновщик выдаёт ошибки типа:
Цитата 1>OGLPyramid.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glShadeModel@4 в функции "protected: virtual void __thiscall OGLPyramid::initializeGL(void)" , т.е. ошибки по поводу функций вида: glShadeModel(), glEnable(), glNewList(), glBegin() и пр. Прототипы этих функций Студия показывает в GL.h. Есть предположение, что компоновщик не находит реализаций. В свойствах проекта: Дополнительные каталоги включаемых файлов: C:\Ot\4.81\include\QtOpenGL, Дополнительные зависимости: QtOpenGL4.lib, QtOpenGLd4.lib. Подскажите, пожалуйста, что и где ещё нужно подключить, или чего не хватает.(?initializeGL@OGLPyramid@@MAEXXZ)1>OGLPyramid.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glEnable@4 в функции "protected: virtual void __thiscall OGLPyramid::initializeGL(void)" (?initializeGL@OGLPyramid@@MAEXXZ) main.cpp
OGLPyramid.h
OGLPyramid.cpp
|
|
|
Snake174 |
29.11.2012, 4:29
Сообщение
#2
|
Студент Группа: Участник Сообщений: 89 Регистрация: 18.4.2011 Из: Миасс Пользователь №: 2613 Спасибо сказали: 9 раз(а) Репутация: 0 |
В .pro файле: LIBS += -lopengl32 -lglu32
Сообщение отредактировал Snake174 - 29.11.2012, 4:31 |
|
|
alsav22 |
29.11.2012, 4:45
Сообщение
#3
|
Студент Группа: Участник Сообщений: 23 Регистрация: 6.5.2012 Пользователь №: 3365 Спасибо сказали: 0 раз(а) Репутация: 0 |
В .pro файле: LIBS += -lopengl32 -lglu32 Благодарю, но я без .pro файла делаю (в Студии Express). Решение нашёл. Нужно в Свойствах проекта - Компоновщик - Ввод - Дополнительные зависимости прописать: opengl32.lib (наверное, можно ещё и glu32.lib, хотя и так компилируется). |
|
|
Алексей1153 |
29.11.2012, 8:55
Сообщение
#4
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
alsav22, или без прописывания в настройках:
|
|
|
Iron Bug |
29.11.2012, 18:15
Сообщение
#5
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
|
|
|
alsav22 |
29.11.2012, 18:57
Сообщение
#6
|
Студент Группа: Участник Сообщений: 23 Регистрация: 6.5.2012 Пользователь №: 3365 Спасибо сказали: 0 раз(а) Репутация: 0 |
Осталась одна заморочка. Делаю в Студии 2010 Express. В Release всё нормально. В Debug компилируется без ошибок. При запуске так. Если в Свойствах проекта - Компоновщик - Ввод -Дополнительные зависимости прописана библиотека QtOpenGL4.lib, то на консоли мелькает сообщение: "QWidget: Must construct a QApplication before a QPaintDevice" и программа закрывается без вывода окна. В инете по этому поводу пишут, что это происходит из-за несоответствия режима компиляции и библиотеки. Если прописать там: QtOpenGLd4.lib, то при запуске выскакивает: "Необработанное исключение....Нарушение прав доступа при чтении".
Остальные библиотеки там прописаны с d. В Release без d. Если делаю в Студии 2010 Ultimate, то там всё нормально. В ней можно создавать проекты Qt и в свойствах проекта всё автоматом прописывается. Посмотрел как там это библиотека прописана. Там всё как надо: для Debug с d, для Release - без. Почему в Express это исключение выскакивает непонятно. Через qmake всё нормально собирается. Этоа ошибка появляется при запуске именно в Студии. Если запускать непосредственно .exe файл, то всё нормально. Вопрос снимаю. Была какая-то заморочка с проектом. Создал по новой, и всё нормально заработало. |
|
|
Текстовая версия | Сейчас: 29.11.2024, 18:27 |