在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. */