Использование GLUT с Visual C ++ Express Edition

Каковы основные шаги для компиляции приложения OpenGL с использованием GLUT (OpenGL Utility Toolkit) в Visual C ++ Express Edition?

18.08.2008 07:00:21
2 ОТВЕТА
РЕШЕНИЕ
  1. Если у вас нет Visual C ++ Express Edition (VCEE), загрузите и установите VCEE .
  2. Установка Visual C ++ Express Edition по умолчанию для платформы .Net. Нам нужно будет собрать для платформы Windows, так как OpenGL и GLUT еще не полностью поддерживаются в .Net. Для этого нам нужен Microsoft Platform SDK. (Если вы используете более старую версию VCEE, загрузите и установите пакет Microsoft Platform SDK . Для сборки на платформе Windows потребуется настроить Visual C ++ Express Edition. Все эти инструкции доступны здесь .)
  3. Если у вас нет GLUT, скачайте и распакуйте Windows-порт Нейта Робина с GLUT .
  4. Добавить glut.h в свой Platform SDK / включить / GL / каталог
  5. Свяжите проект с glut.lib . (Перейдите в Свойства проекта VCEE -> Дополнительные каталоги компоновщика и добавьте каталог, в котором есть glut.lib .
  6. Добавьте glut.dll в каталог Windows / System32 , чтобы все программы, использующие GLUT, могли найти его во время выполнения.

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

9
18.08.2008 07:08:50
Благодаря тонну! Для тех из нас, кто не совсем понимает шаг 4, это вылилось в следующую директорию для меня (в качестве примера): C: \ Program Files \ Microsoft SDKs \ Windows \ 7.0a \ Include \ GL. Шаг 5 'Lib' Каталог находится на том же уровне, что и «Включить» (в этом случае вам не нужно объявлять и дополнительный каталог компоновщика).
Gazza 18.08.2012 18:50:26

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

  1. Замените exit()прототип glut.hна тот, что у вас, stdlib.hчтобы они совпадали. Это, наверное, лучшее решение.
  2. Более простое решение - #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. */
6
22.09.2008 07:01:30
Baxissimo: Спасибо за указание на эту распространенную ошибку и ее исправление. Я видел, что почти каждый новичок OpenGL сталкивается с этой ошибкой.
Ashwin Nanjappa 29.09.2008 08:43:09