Каковы основные шаги для компиляции приложения OpenGL с использованием GLUT (OpenGL Utility Toolkit) в Visual C ++ Express Edition?
Использование GLUT с Visual C ++ Express Edition
Ответы (2)
- Если у вас нет Visual C ++ Express Edition (VCEE), загрузите и установите VCEE.
- Стандартная установка Visual C ++ Express Edition строится для платформы .Net. Нам нужно будет выполнить сборку для платформы Windows, поскольку OpenGL и GLUT еще не полностью поддерживаются в .Net. Для этого нам понадобится Microsoft Platform SDK. (Если вы используете старую версию VCEE, загрузите и установите Microsoft Platform SDK. Visual C ++ Express Edition необходимо настроить для сборки на платформе Windows. Все эти инструкции доступны здесь.)
- Если у вас нет GLUT, загрузите и распакуйте порт GLUT для Windows Нейта Робина. .
- Добавьте glut.h в каталог Platform SDK / include / GL /.
- Свяжите проект с glut.lib. (Перейдите в VCEE Свойства проекта -> Дополнительные каталоги компоновщика и добавьте каталог, в котором есть glut.lib.
- Добавьте glut.dll в каталог Windows / System32, чтобы все программы, использующие GLUT, могли найти его во время выполнения.
Ваша программа, использующая GLUT или OpenGL, должна теперь компилироваться под Visual C ++ Express Edition.
Порт 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. */