2011-08-16 5 views
0

나는 opengl을 시작하려고 노력하고 있으며 VS2010 궁극적 인 sp1을 사용하고 있지만 OpenGL 헤더를 추가 할 때 나에 의해 생성되지 않은 파일에 오류가 있음을 나타내는 오류가 발생합니다.OpenGl in VS2010

#include "stdafx.h" 
#include <Windows.h> 
#include <gl\GL.h> 
#include <gl\GLU.h> 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    return 0; 
} 

오류 (총 195)이 내가 한 가장 일반적인 생각입니다 :
오류 1 오류 C2008 : '$'매크로 정의 C에서 예기치 않은 : \ 프로그램 파일 \은 Microsoft SDKs \ 윈도우 \의 V7. 0A \ include \ driverspecs.h 142

+0

GLee를 사용해 보았습니까? (http://www.opengl.org/sdk/libs/GLee/) – James

+5

** 처음 ** 오류 메시지 란 무엇입니까? –

+0

분명히 _ PREFAST _ 매크로가 정의됩니다. 그러나 나는 그 원인을 정확히 알지 못합니다. 궁극적 인 VS2010을 사용하고 있으므로 잘못된 옵션을 설정했을 수 있습니다. Google은 일부 코드 분석 도구 (PREfast라고 함)와 관련이 있음을 나타냅니다. 이 문제를 해결하려면 기본 옵션으로 프로젝트를 다시 만드십시오. –

답변

0

내 첫 번째 추측은 windows.h가 OpenGL 정의와 충돌하는 것입니다. 이 같은 간단한 명령 행 응용 프로그램에 windows.h가 실제로 필요하지는 않습니다. 또 다른 가능성은 미리 컴파일 된 헤더 옵션 (stdafx.h)입니다. OpenGL과 다른 크로스 플랫폼 프로젝트를 처리 할 때 보통 컴파일러 옵션에서 사용하지 않도록 설정합니다. 일반적으로 가져 오는 종속성은 일반적으로 포팅 된 코드와 잘 일치하지 않습니다.

+0

여전히'windows.h'를 포함해야합니다; 하나도 없으면 창을 만들 수 없습니다. 그리고 창을 만들지 않고도 OpenGL을 초기화 할 수는 없습니다. –

+0

GLUT 또는 WGL을 사용하려고하는지 여부에 따라 다릅니다. GLUT는 라이브러리 사용자가 OS 고유 헤더를 포함 할 것을 요구하지 않습니다. – AlexK

+0

그리고 또 다른 질문이 생깁니다 : 어떤 OpenGL 구현을 사용하려고합니까? – AlexK

5

Please Microsoft C++ 확장을 비활성화하지 않았는지 확인하십시오. 식별자의 일부로 $는 이러한 확장의 일부이므로 driverspecs.h는 비활성화 될 때 컴파일되지 않습니다. 명령 줄 스위치는/Za이며이 옵션은 Visual Studio의 프로젝트 속성에서 언어 섹션의 맨 위에 있습니다