11

在 Visual C++ Express Edition 下使用GLUT (OpenGL Utility Toolkit)编译 OpenGL 应用程序的基本步骤是什么?

4

2 回答 2

9
  1. 如果您没有 Visual C++ Express Edition (VCEE),请下载并安装VCEE
  2. Visual C++ Express Edition 的默认安装是为 .Net 平台构建的。我们需要为 Windows 平台构建,因为 .Net 还没有完全支持 OpenGL 和 GLUT。为此,我们需要 Microsoft 平台 SDK。(如果您使用的是旧版本的 VCEE,请下载并安装Microsoft Platform SDK。需要将 Visual C++ Express Edition 配置为针对 Windows 平台构建。所有这些说明都可以在此处获得。)
  3. 如果您没有 GLUT,请下载并解压缩 Nate Robin 的GLUT Windows 端口
  4. glut.h添加到您的Platform SDK/include/GL/目录
  5. 将项目与glut.lib链接。(转到 VCEE Project Properties -> Additional Linker Directories并添加具有glut.lib的目录。
  6. 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()。如果您看到此错误,有两种可能的解决方案:

  1. exit()原型替换为glut.h您的原型,stdlib.h以便它们匹配。这可能是最好的解决方案。
  2. 一个更简单的解决方案是#define GLUT_DISABLE_ATEXIT_HACK在你#include <gl/glut.h>的程序之前。

(由于信用:我最初在TAMU 帮助台网站上看到了这个建议。)

自从 .NET 2003 出现以来,我自己就一直在使用方法 #1,并且使用glut.hVC++ 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 回答