在 Visual C++ Express Edition 下使用GLUT (OpenGL Utility Toolkit)编译 OpenGL 应用程序的基本步骤是什么?
Ash
问问题
16597 次
2 回答
9
- 如果您没有 Visual C++ Express Edition (VCEE),请下载并安装VCEE。
- Visual C++ Express Edition 的默认安装是为 .Net 平台构建的。我们需要为 Windows 平台构建,因为 .Net 还没有完全支持 OpenGL 和 GLUT。为此,我们需要 Microsoft 平台 SDK。(如果您使用的是旧版本的 VCEE,请下载并安装Microsoft Platform SDK。需要将 Visual C++ Express Edition 配置为针对 Windows 平台构建。所有这些说明都可以在此处获得。)
- 如果您没有 GLUT,请下载并解压缩 Nate Robin 的GLUT Windows 端口。
- 将glut.h添加到您的Platform SDK/include/GL/目录
- 将项目与glut.lib链接。(转到 VCEE Project Properties -> Additional Linker Directories并添加具有glut.lib的目录。
- 将glut.dll添加到Windows/System32目录,以便所有使用 GLUT 的程序在运行时都能找到它。
您使用 GLUT 或 OpenGL 的程序现在应该在 Visual C++ Express Edition 下编译。
于 2008-08-18T07:00:32.600 回答
6
Nate Robin 网站上的 GLUT 端口是从 2001 年开始的,并且与比该版本更新的 Visual Studio 版本(.NET 2003 及更高版本)存在一些不兼容性。不兼容表现为关于重新定义的错误exit()
。如果您看到此错误,有两种可能的解决方案:
- 将
exit()
原型替换为glut.h
您的原型,stdlib.h
以便它们匹配。这可能是最好的解决方案。 - 一个更简单的解决方案是
#define GLUT_DISABLE_ATEXIT_HACK
在你#include <gl/glut.h>
的程序之前。
(由于信用:我最初在TAMU 帮助台网站上看到了这个建议。)
自从 .NET 2003 出现以来,我自己就一直在使用方法 #1,并且使用glut.h
VC++ 2003、VC++ 2005 和 VC++ 2008 进行了相同的修改。
这是我使用#1 的 glut.h 的差异(但在适当的#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. */
于 2008-09-22T01:02:59.560 回答