转载:glut.h 与 stdlib.h中 的exit()重定义问题的解决
遇到的问题,来自:http://blog.sina.com.cn/s/blog_629c53bd0100f5li.html
出现:
c:\codeprogram\microsoft visual studio 10.0\vc\include\stdlib.h(353): error C2381: “exit”: 重定义;__declspec(noreturn) 不同
1> c:\program files\microsoft sdks\windows\v7.0a\include\gl\glut.h(146) : 参见“exit”的声明
解决:
在网上搜了解决方法:
方案一:
在C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\gl\glut.h的144行处,即
#if defined(_WIN32)
#ifndef GLUT_BUILDING_LIB
extern _CRTIMP void __cdecl exit(init);
把extern _CRTIMP void __cdecl exit(init);注释掉,然后添上
#if _MSC_VER >= 1200
_CRTIMP __declspec(noreturn) void __cdecl abort(void);
_CRTIMP __declspec(noreturn) void __cdecl exit(int);
#else
_CRTIMP void __cdecl abort(void);
_CRTIMP void __cdecl exit(int);
#endif
方案二:
#include <stdlib.h>
#include <gl/glut.h> (Just change the definition order = 改变顺序)
即<gl/glut.h>要放在stdlib之后包含。