2008-08-18 2 views

ответ

9
  1. Если у вас нет Visual C++ Express Edition (VCEE), загрузите и установите VCEE.
  2. Установленная по умолчанию установка Visual C++ Express Edition для платформы .NET. Нам нужно будет создать платформу Windows, так как OpenGL и GLUT еще не полностью поддерживаются в .Net. Для этого нам нужен пакет Microsoft Platform SDK. (Если вы используете старую версию VCEE, загрузите и установите Microsoft Platform SDK. Visual C++ Express Edition необходимо будет настроить для платформы Windows. Все эти инструкции доступны here.)
  3. Если у вас нет GLUT, загрузите и распакуйте Nate Robin's Windows port of GLUT.
  4. Добавить glut.h к вашему Platform SDK/включить/GL/каталог
  5. Link проект с glut.lib. (Перейти к VCEE Свойства проекта -.> Дополнительные Linker Каталоги и добавить каталог, который имеет glut.lib
  6. Добавить glut.dll в Windows/System32 каталога, так что все программы, использующие GLUT можно найти во время выполнения.

Ваша программа, которая использует GLUT или OpenGL следует компилировать под Visual C++ Express Edition в настоящее время.

+0

Спасибо тонну! Для тех из нас, которые не совсем понимают шаг 4, это переведено в следующий каталог для меня (в качестве примера): C: \ Program Files \ Microsoft SDK \ Windows \ 7.0a \ Include \ GL . 'находится на том же уровне, что и «Include» (в этом случае вам не нужно объявлять и дополнительный каталог компоновщика). – Gazza 2012-08-18 18:50:26

6

перенасыщение порт на сайте Nate Робина от 2001 nd имеет некоторые несовместимости с версиями Visual Studio более поздними, чем это (.NET 2003 и выше). Несовместимость проявляется как ошибки в переопределении exit(). Если вы видите эту ошибку, есть два возможных решения:

  1. Заменить exit() прототип glut.h с в вашем stdlib.h так, что они совпадают. Это, вероятно, лучшее решение.
  2. Простым решением является #define GLUT_DISABLE_ATEXIT_HACK перед вами #include <gl/glut.h> в вашей программе.

(Из-за кредит: Первоначально я видел этот совет на TAMU help desk website.)

Я использую подход # 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. */ 
+0

Baxissimo: Спасибо, что указали эту общую ошибку и ее исправление. Я видел, что почти каждый новичок OpenGL сталкивается с этой ошибкой. – 2008-09-29 08:43:09

Смежные вопросы