在Visual C++ Express Edition下使用GLUT(OpenGL Utility Toolkit)编译OpenGL应用程序的基本步骤是什么?
如果您没有Visual C++ Express Edition(VCEE),请下载并安装VCEE.
Visual C++ Express Edition的默认安装是为.Net平台构建的.我们需要为Windows平台构建,因为OpenGL和GLUT尚未完全支持.Net.为此,我们需要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()
.如果您看到此错误,则有两种可能的解决方案:
更换exit()
原型glut.h
与一个在你stdlib.h
让它们匹配.这可能是最好的解决方案.
一个更简单的解决方案是在你的程序#define GLUT_DISABLE_ATEXIT_HACK
之前#include
.
(应有的信誉:我最初在TAMU服务台网站上看到了这个建议.)
自.NET 2003问世以来,我一直在使用方法#1,并且使用了glut.h
与VC++ 2003,VC++ 2005和VC++ 2008 相同的修改方法.
这里是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. */