将GLUT与Visual C ++ Express Edition一起使用

时间:2008-08-18 07:00:21

标签: visual-studio visual-c++ opengl glut

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

2 个答案:

答案 0 :(得分:9)

  1. 如果您没有Visual C ++ Express Edition(VCEE),请下载并安装VCEE
  2. 为.Net平台构建的Visual C ++ Express Edition的默认安装。我们需要为Windows平台构建,因为OpenGL和GLUT尚未完全支持.Net。为此,我们需要Microsoft Platform SDK。 (如果您使用的是旧版本的VCEE,请下载并安装Microsoft Platform SDK。需要将Visual C ++ Express Edition配置为针对Windows平台构建。所有这些说明均可用here。)< / LI>
  3. 如果您没有GLUT,请下载并解压缩Nate Robin的Windows port of GLUT
  4. glut.h 添加到 Platform SDK / include / GL / 目录
  5. 将项目与 glut.lib 相关联。 (转到VCEE 项目属性 - &gt;其他链接器目录并添加 glut.lib 的目录。
  6. glut.dll 添加到 Windows / System32 目录,以便所有使用GLUT的程序 可以在运行时找到它。
  7. 使用GLUT或OpenGL的程序现在应该在Visual C ++ Express Edition下编译。

答案 1 :(得分: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>
  3. (适当的信用:我最初在TAMU help desk website上看到了这个建议。)

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

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