OpenGL и MS Visual Studio 2008
Доброго времени суток.
Вопрос не новый, но просьба не посылать к Гуглу и Яндексу.
Сам вопрос:
ОС — Windows7,
IDE — MS Visual Studio 2008 Professional Edition,
API — OpenGL.
Не компилируется проект.
Ошибка: c:\program files\microsoft sdks\windows\v6.0a\include\gl\glaux.h(42) : fatal error C1014: too many include files : depth = 1024. т.е. много включенных файлов.
Главный файл(*.cpp):
#include «stdafx.h»
#pragma comment(lib, «opengl32.lib»)
#pragma comment(lib, «glu32.lib»)
#pragma comment(lib, «glaux.lib»)
#include <windows.h>
#include «3DMODEL.h»
Создавал отдельный хедер(3DMODEL.h):
#pragma once
#ifndef _3dModel_h
#define _3dModel_h
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glaux.h>
#endif
Один хер, та же ошибка.
Хоть систему сноси, ставь XP и Visual C++ 6.0 (все работает)
P.S. Скачал DevIL-SDK-x64-1.7.8, но увы.
12 ответов
не катит. сразу ошибки с неизвестным идентификаторами, поробовал различные варианты.
Просьба еще советы, и объяснить в чем причина.
P.S. ОС — Windows7 (Тип системы: 32). Вдруг поможет.
что-то в этом есть.
ибо я тут пошарился по форумам у Майкрософта и нашел:
1) install glut 3.6 or newer as directed.
2) Open Visual studio 2008 and create a new project
3) choose c++ — empty solution
4) import all the files from your previous OpenGL project
5) delete all headers i.e.
#include <gl\glu.h>
#include <gl\gluax.h>
and any other GL headers
6) then replace with #include <gl\glut.h>
7) recompile.
или можно извратнуться, поставить PlatformSDK для Win2003 и подключать оттуда
Скачал с opengl.org glut 3.7 с дирекории include\gl скопировал все файлы (из знакомых только glut.h. такие как fgl.h,fglu.h, fglut, glsmap.h и tube.h вижу впервые и еще не разбирался для чего они).
Заменил в коде glaux.h на glut.h. Ошибка C1014 исчезла, но появились ошибки с низвестными инденфикаторами.
d:\projects\3dmodel\3dmodel\3dmodel.cpp(43) : error C3861: ‘auxSwapBuffers’: identifier not found
d:\projects\3dmodel\3dmodel\3dmodel.cpp(53) : error C3861: ‘_getch’: identifier not found
d:\projects\3dmodel\3dmodel\3dmodel.cpp(59) : error C3861: ‘auxInitPosition’: identifier not found
d:\projects\3dmodel\3dmodel\3dmodel.cpp(60) : error C2065: ‘AUX_RGB’ : undeclared identifier
d:\projects\3dmodel\3dmodel\3dmodel.cpp(60) : error C2065: ‘AUX_DEPTH’ : undeclared identifier
d:\projects\3dmodel\3dmodel\3dmodel.cpp(60) : error C2065: ‘AUX_DOUBLE’ : undeclared identifier
d:\projects\3dmodel\3dmodel\3dmodel.cpp(60) : error C3861: ‘auxInitDisplayMode’: identifier not found
d:\projects\3dmodel\3dmodel\3dmodel.cpp(61) : error C3861: ‘auxInitWindow’: identifier not found
d:\projects\3dmodel\3dmodel\3dmodel.cpp(62) : error C3861: ‘auxIdleFunc’: identifier not found
d:\projects\3dmodel\3dmodel\3dmodel.cpp(63) : error C3861: ‘auxReshapeFunc’: identifier not found
d:\projects\3dmodel\3dmodel\3dmodel.cpp(83) : error C3861: ‘auxMainLoop’: identifier not found
Что подрубать?
И почему не срабатывал код
#pragma once
#ifndef _3dModel_h
#define _3dModel_h
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glaux.h>
#endif
Он же должен был проверять чтоб открывался только один экземпляр, если не ошибаюсь.
С этим понятно это из conio.h.
d:\projects\3dmodel\3dmodel\3dmodel.cpp(53) : error C3861: ‘_getch’: identifier not found
А остальные тогда откуда брать если glaux.h не катит?
Где? В файлах gl.h, glu.h нет таких вызовов.
А в моих файлах glaux.h вызывался только в одном месте, как мне посоветовали, я заменил сразу его на glut.h. И появились ошибки с неизвестными идентификаторами.
Cамо слово glaux осталось только в:
#pragma comment(lib, «glaux.lib»)
менял на:
#pragma comment(lib, «glut32.lib»)
те же ошибки
P.S.
по этому пути глянул не было там файла glaux.lib
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib
скопировал ошибки те же, залил туда же glut32.lib, та жа бодяга
Объясните где я не прав.
Кароче, функции, котрые вызывались из glaux, теперь оттуда не вызываются, ибо нет таково файла, не подключено он к проекту. Так же?
поэтому имена функций, начинающиеся с «aux» какбэ же не летают. GLAUX и GLUT абсолютно разные библиотеки, со схожим функционалом.
Найдите пример с GLUT (а их валом!) и все поймете
полазил в самом glut.h нашел функции заменил.
//void CALLBACK resize(int width,int height)
void resize(int width,int height)
//void CALLBACK display(void)
void display(void)
int _tmain(int argc, _TCHAR* argv[])
<
float pos[4] = <3,3,3,1>;
float dir[3] = <-1,-1,-1>;
glutInit(&argc, argv);
glutInitWindowPosition( 50, 10);
glutInitWindowSize(350,350);
//auxtInitPosition( 50, 10, 400, 400);
glutInitDisplayMode( GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE );
//auxInitDisplayMode( AUX_RGB | AUX_DEPTH | AUX_DOUBLE );
glutCreateWindow( «Model» );
//auxInitWindow( «Model» );
glutIdleFunc(display);
//auxIdleFunc(display);
glutReshapeFunc(resize);
//auxReshapeFunc(resize);
glLightfv(GL_LIGHT0, GL_POSITION, pos);
glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, dir);
glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);
glMaterialf(GL_FRONT, GL_SHININESS, 128.0);
Но другая ошибка
d:\projects\3dmodel\3dmodel\3dmodel.cpp(61) : error C2664: ‘glutInit’ : cannot convert parameter 2 from ‘_TCHAR *[]’ to ‘char **’
как лучше изменить glutInit.
Пока сам ищу, но может народ быстрее подскажет.
Но продолжаем дальше.
LINK : fatal error LNK1000: Internal error during IncrBuildImage
выдавала при компиляци. Исправили скачали KB948127 у Microsoft.
Glaux lib как подключить в visual studio
>В меню Project/setting, выберите закладку LINK. В строке "Object/Library Modules" добавьте "OpenGL32.lib GLu32.lib GLaux.lib"
а как это делать в MSVS2008.
там у проекта другие настройки
не могу понять куда писать .DLL
| Меню пользователя zaytsewa |
| Посмотреть профиль |
| Найти ещё сообщения от zaytsewa |
| Меню пользователя WestGott |
| Посмотреть профиль |
| Найти ещё сообщения от WestGott |
хочу подключить библиотеку *.DLL линкеру
и всё.
как это сделать в интерфейсе VS2008??
там столько всяких полей для заполнения.
так вот куда конкретно прописать имя библиотеки.
| Меню пользователя zaytsewa |
| Посмотреть профиль |
| Найти ещё сообщения от zaytsewa |
zaytsewa
Непосредственно Dll-библиотеку к линкеру подключить невозможно.
На стандартные Dll-библиотеки, есть так называемые библиотеки импорта
Например для библиотеки Shell32.dll есть библиотека импорта Shell32.lib
для User32.dll есть User32.lib и т.п.
Если есть библиотека импорта на подключаемую dll
тогда открываем: свойства проекта -> компоновщик -> ввод
Далее в поле "дополнительные зависимости" вводим имя библиотеки импорта и всё.