使用GLUT和Visual C++ Express Edition

11

如何在 Visual C++ Express Edition 中使用 GLUT(OpenGL 实用工具库) 编译 OpenGL 应用程序的基本步骤是什么?

2个回答

9
  1. 如果您没有安装Visual C++ Express Edition(VCEE),请下载并安装VCEE
  2. Visual C++ Express Edition的默认安装是为.Net平台构建的。由于OpenGL和GLUT在.Net下尚未完全支持,因此我们需要为Windows平台构建。为此,我们需要Microsoft Platform 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 项目属性->其他链接器目录并添加具有glut.lib的目录。)
  6. glut.dll添加到Windows/System32目录中,以便所有使用GLUT的程序可以在运行时找到它。

现在使用GLUT或OpenGL的程序应该能够在Visual C++ Express Edition下编译了。


非常感谢!对于我们这些不太理解第四步的人来说,这对我来说翻译成了以下目录(以C:\Program Files\Microsoft SDKs\Windows\7.0a\Include\GL为例)。 第五步的“Lib”目录与“Include”处于同一级别(在这种情况下,您无需声明任何其他链接器目录)。 - Gazza

6
Nate Robin网站上的GLUT移植是从2001年开始的,与比它更新的版本(.NET 2003及以上)的Visual Studio存在一些不兼容性。不兼容性表现为有关exit()重新定义的错误。如果您看到此错误,有两种可能的解决方法:
  1. glut.h中的exit()原型替换为您的stdlib.h中的原型,以使它们匹配。这可能是最好的解决方案。
  2. 更简单的解决方案是在您的程序中,在#include <gl/glut.h>之前定义#define GLUT_DISABLE_ATEXIT_HACK
(致谢:我最初在TAMU帮助台网站上看到了这个建议。)
自.NET 2003推出以来,我自己一直在使用第一种方法,并已将同一修改后的glut.h用于VC++ 2003、VC++ 2005和VC++ 2008。
这是我使用的glut.h差异,它实现了#1(但在适当的#ifdef块中,以便仍可与旧版本的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. */

Baxissimo:感谢您指出这个常见错误及其解决方法。我发现几乎每个OpenGL新手都会遇到这个错误。 - Ashwin Nanjappa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接