Ошибка переопределения выхода GLUT - PullRequest
31 голосов
/ 18 августа 2008

В моей простой программе 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'

Я использую GLUT Нейта Робинса для Win32 и получаю эту ошибку в Visual Studio 2005 или Visual C ++ 2005 (Express Edition). В чем причина этой ошибки и как ее исправить?

Ответы [ 2 ]

70 голосов
/ 18 августа 2008

Причина:

stdlib.h , который поставляется с последними версиями Visual Studio, имеет другое (и противоречивое) определение функции exit () . Это противоречит определению в glut.h .

Решение:

Переопределите определение в glut.h определением в stdlib.h. Поместите строку stdlib.h над строкой glut.h в своем коде.

#include <stdlib.h>
#include <GL/glut.h>
18 голосов
/ 06 ноября 2009

или это ... Чтобы исправить ошибку, щелкните правой кнопкой мыши имя проекта на вкладке Solution Explorer и выберите Свойства -> C / C ++ -> Препроцессор -> Определения препроцессора и добавьте GLUT_BUILDING_LIB к существующим определениям, разделив их точкой с запятой.

...