Порт GLUT на сайте Нейта Робина относится к 2001 году и имеет некоторые несовместимости с более поздними версиями Visual Studio (.NET 2003 и выше). Несовместимость проявляется как ошибки в переопределении exit()
. Если вы видите эту ошибку, есть два возможных решения:
- Замените
exit()
прототип в glut.h
на тот, что в вашем stdlib.h
, чтобы они совпадали. Это, наверное, лучшее решение.
- Более простое решение -
#define GLUT_DISABLE_ATEXIT_HACK
, прежде чем #include <gl/glut.h>
в вашей программе.
(Считается: я изначально видел этот совет на веб-сайте службы поддержки TAMU .)
Я сам использовал подход # 1 с момента выхода .NET 2003 и использовал те же самые модифицированные glut.h
с VC ++ 2003, VC ++ 2005 и VC ++ 2008.
Вот различие для glut.h, который я использую, который делает # 1 (но в соответствующем #ifdef blocks
, чтобы он все еще работал с более старыми версиями Visual Studio):
--- c:\naterobbins\glut.h 2000-12-13 00:22:52.000000000 +0900
+++ c:\updated\glut.h 2006-05-23 11:06:10.000000000 +0900
@@ -143,7 +143,12 @@
#if defined(_WIN32)
# ifndef GLUT_BUILDING_LIB
-extern _CRTIMP void __cdecl exit(int);
+/* extern _CRTIMP void __cdecl exit(int); /* Changed for .NET */
+# if _MSC_VER >= 1200
+extern _CRTIMP __declspec(noreturn) void __cdecl exit(int);
+# else
+extern _CRTIMP void __cdecl exit(int);
+# endif
# endif
#else
/* non-Win32 case. */