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, но увы.
Просьба еще советы, и объяснить в чем причина.
P.S. ОС - Windows7 (Тип системы: 32). Вдруг поможет.
что-то в этом есть.
ибо я тут пошарился по форумам у Майкрософта и нашел:
и
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 и подключать оттуда
Заменил в коде 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 не катит?
А в моих файлах 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};
GLfloat mat_specular[] = {1,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);
glEnable(GL_DEPTH_TEST);
glEnable(GL_COLOR_MATERIAL);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
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);
glutMainLoop();
//auxMainLoop(display);
//return 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.
Но затем:
Когда Release компилируется:
------ Build started: Project: 3DMODEL, Configuration: Release Win32 ------
Compiling...
3DMODEL.cpp
Build log was saved at "file://d:\projects\3DMODEL\3DMODEL\Release\BuildLog.htm"
3DMODEL - 0 error(s), 0 warning(s)
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
Делаем Debugging
Затем открывается консольное окошко(ну как обычно, если надо текст выводит), затем окошко где дожна быть графика, но быстро открывется и также быстро закрывается.
Вот логи:
'3DMODEL.exe': Loaded 'D:\projects\3DMODEL\Release\3DMODEL.exe', Symbols loaded.
'3DMODEL.exe': Loaded 'C:\Windows\System32\ntdll.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\kernel32.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\KernelBase.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\opengl32.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\msvcrt.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\advapi32.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\sechost.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\rpcrt4.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\gdi32.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\user32.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\lpk.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\usp10.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\glu32.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\ddraw.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\dciman32.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\setupapi.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\cfgmgr32.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\oleaut32.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\ole32.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\devobj.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\dwmapi.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\glut32.dll', Binary was not built with debug information.
'3DMODEL.exe': Loaded 'C:\Windows\System32\winmm.dll'
'3DMODEL.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4926_none_508ed732bcbc0e5a\msvcr90.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\imm32.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\msctf.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\uxtheme.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\cryptbase.dll'
The program '[16584] 3DMODEL.exe: Native' has exited with code 1 (0x1).
При Debug:
------ Build started: Project: 3DMODEL, Configuration: Debug Win32 ------
Compiling...
Skipping... (no relevant changes detected)
3DMODEL.cpp
Build log was saved at "file://d:\projects\3DMODEL\3DMODEL\Debug\BuildLog.htm"
3DMODEL - 0 error(s), 0 warning(s)
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
Делаем Debugging
точно также быстро открылось закрылось.
Вот логи:
'3DMODEL.exe': Loaded 'D:\projects\3DMODEL\Debug\3DMODEL.exe', Symbols loaded.
'3DMODEL.exe': Loaded 'C:\Windows\System32\ntdll.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\kernel32.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\KernelBase.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\opengl32.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\msvcrt.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\advapi32.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\sechost.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\rpcrt4.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\gdi32.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\user32.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\lpk.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\usp10.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\glu32.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\ddraw.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\dciman32.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\setupapi.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\cfgmgr32.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\oleaut32.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\ole32.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\devobj.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\dwmapi.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\glut32.dll', Binary was not built with debug information.
'3DMODEL.exe': Loaded 'C:\Windows\System32\winmm.dll'
'3DMODEL.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.21022.8_none_96748342450f6aa2\msvcr90d.dll', Symbols loaded.
'3DMODEL.exe': Loaded 'C:\Windows\System32\imm32.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\msctf.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\uxtheme.dll'
'3DMODEL.exe': Loaded 'C:\Windows\System32\cryptbase.dll'
The program '[16344] 3DMODEL.exe: Native' has exited with code 1 (0x1).
Что делать?
P.S. Если везде не переходили на 64, Microsoft не обещал бы что перестанет обслуживать XP, и что скоро выйдет Windows8(128). Сидел бы на XP и обучался бы спокойно. Но все таки охота работать с новыми технологиями, на новых инструментах.
Вообще думаю параллельно изучать *nux (но это к теме не относится)
Пошаговая отладка вам в руки,узнаете,почему программа так быстро отрабатывает