GLUT 退出重定义错误

Posted

技术标签:

【中文标题】GLUT 退出重定义错误【英文标题】:GLUT exit redefinition error 【发布时间】:2008-08-18 09:55:29 【问题描述】:

在我的简单 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) 时遇到此错误。这个错误的原因是什么,我该如何解决?

【问题讨论】:

【参考方案1】:

原因:

最新版本的 Visual Studio 附带的 stdlib.hexit() 函数有不同(且相互冲突)的定义。它与 glut.h 中的定义相冲突。

解决方案:

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

#include <stdlib.h>
#include <GL/glut.h>

【讨论】:

【参考方案2】:

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

【讨论】:

谢谢!包括你的 glut.h 上面的 stdlib.h 对我不起作用。这个解决方案做到了!

以上是关于GLUT 退出重定义错误的主要内容,如果未能解决你的问题,请参考以下文章

error C2381: “exit” : 重定义

QT 资源重定义错误

C语言的重定义错误,求解

带有自定义错误消息的 Django 重定向

如何使用自定义 django 404 错误视图重定向?

如何使用 Codeigniter 在自定义 404 页面中重定向 404 错误?