2009. 2. 28. 18:11

[펌] glut.h의 exit 재정의 에러(stdlib.h)


오픈지엘로 개발된 프로그램을 실행하다가 애러가 있었는데 아래와 같이 해결했뜸.

Visual C++ (ver. 7.0 이상) 에서 GLUT용 프로그램을 작성할 때, 다음과 같은 stdlib.h 의 exit 중복 정의 에러가 발생한다.


c:\program files\microsoft visual studio 9.0\vc\include\stdlib.h(371) : error C2381: 'exit' : 재정의; __declspec(noreturn) 가 다릅니다.



여러가지 해결책이 있겠으나, 여기서는 2가지를 제시하겠다.


(해결책 1) stdlib의 include를 GL/glut.h 보다 먼저 선언한다


(해결책 2) GL/glut.h 에서 문제가 발생한 부분을 수정한다.

먼저, 문제가 발생하는 부분은 다음과 같다.


#if defined(_WIN32)
# ifndef GLUT_BUILDING_LIB

extern _CRTIMP void __cdecl exit(int);

# endif
#else


아래의 코드를 문제가 발생한 부분에 덮어쓴다.


#if _MSC_VER>= 1200
_CRTIMP __declspec(noreturn) void __cdecl exit(int);
#elif defined(_WIN32) && !defined(GLUT_BUILDING_LIB)
extern _CRTIMP void __cdecl exit(int);
#else


문제해결~