在Visual C ++ Express Edition中使用GLUT

时间:2020-03-05 18:40:16  来源:igfitidea点击:

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

解决方案

回答

  • 如果我们没有Visual C ++ Express Edition(VCEE),请下载并安装VCEE。
  • Visual C ++ Express Edition的默认安装为.Net平台生成。我们需要针对Windows平台进行构建,因为.Net尚未完全支持OpenGL和GLUT。为此,我们需要Microsoft Platform SDK。 (如果我们使用的是VCEE的旧版本,请下载并安装Microsoft Platform SDK。将需要配置Visual C ++ Express Edition以针对Windows平台进行构建。所有这些说明都可在此处获得。)
  • 如果我们没有GLUT,请下载并解压缩Nate Robin的GLUT Windows端口。
  • 将glut.h添加到Platform SDK / include / GL /目录
  • 将项目链接到glut.lib。 (转到VCEE项目属性->其他链接器目录,然后添加包含glut.lib的目录。
  • 将glut.dll添加到Windows / System32目录,以便所有使用GLUT的程序都可以在运行时找到它。

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

回答

Nate Robin网站上的GLUT端口始于2001年,与最近版本的Visual Studio(.NET 2003及更高版本)不兼容。不兼容表现为有关重新定义exit()的错误。如果看到此错误,则有两种可能的解决方案:

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

(应得的信誉:我最初在TAMU帮助中心网站上看到了此建议。)

自.NET 2003发布以来,我一直在使用方法#1,并且对VC ++ 2003,VC ++ 2005和VC ++ 2008使用了相同的修改后的glut.h

这是我使用的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. */