34

在我简单的 OpenGL 程序中,我收到以下有关退出重定义的错误:

1>c:\program files\microsoft visual studio 8\vc\include\stdlib.h(406) : error C2381: 'exit' : redefinition; __declspec(noreturn) differs
1>        c:\program files\microsoft visual studio 8\vc\platformsdk\include\gl\glut.h(146) : see declaration of 'exit'

我正在使用 Nate Robins 的GLUT for Win32并在 Visual Studio 2005 或 Visual C++ 2005 (Express Edition) 中出现此错误。这个错误的原因是什么,我该如何解决?

4

2 回答 2

75

原因:

与最新版本的 Visual Studio 一起提供的stdlib.hexit()函数有不同(且冲突)的定义。它与glut.h中的定义冲突。

解决方案:

用 stdlib.h 中的定义覆盖 glut.h 中的定义。将 stdlib.h 行放在代码中 glut.h 行的上方。

#include <stdlib.h>
#include <GL/glut.h>
于 2008-08-18T09:55:45.883 回答
20

或者这个...要修复错误,请右键单击解决方案资源管理器选项卡中的项目名称,然后选择属性 -> C/C++ -> 预处理器 -> 预处理器定义并将 GLUT_BUILDING_LIB 附加到现有定义中,用分号分隔。

于 2009-11-06T18:55:32.970 回答