在VC/VC6.0里的设置
有Visual C/C++里建立工程可以有两个选择:控制台(console)和Win32。第一个是最常用的,选第一个的话,应用程序将会有两个窗口,一个控制台窗口(就是命令行那样的窗口)一个OpenGL窗口。选择Win32的也有可能用GLUT和windows编程结合建立一个应用程序。所有你必须做的是改变一个设置。
主菜单中选择“工程”(project)->“设置”(setting)
对话框中选择“连接”(link)标签。
在“分类”(Category)组合框里选择“输出”(output)
再在“入口点”(Entry-point symbol)文本框里键入“mainCRTStartup”
对一个现有的控制台应用程序,有一个简单的办法把它转换成Win32应用程序,这样可以摆脱那个命令行窗口。
1:接着上面的添加入口点的那个标签。
2:在“工程选项”(Project options)文本框里把“subsystem:console”替换成“subsystem:windows”
你也可以仅仅在你的代码的开头添加下面的这一行代码,而不进行上述设置。
#pragma comment(linker,“/subsystem:/”windows/”/entry:/”mainCRTStartup/””)
现在这个应用程序就没有控制台窗口,只有OpenGL窗口。为了把GLUT连接到一个程序里,你还得进行以下几步。
1:选择“工程”(project)->“设置”(settings)。
2:选择“连接”(Link)标签。
3:增加下面的文件到“对象/库模块”(Object/library modules):OpenGL32.lib,glut32.lib,glu32.lib.(一般加一个glut32.lib就可以了)。
上面添加了glut32.lib,和opengl32.lib。这两个都是标准OpenGL的库,glu是一个API来自标准的OpenGL扩充。
在VS.NET里使用OpenGL
很多人在使用VS.NET来建立OpenGL应用程序时,都遇到了一个小问题:一个编译器错误。根据我所知道的,好像仅存在与VS 2003和VS2005的编译器里。下面是VS2005里产生的错误。
c:/programas/microsoft visual studio 8/vc/include/stdlib.h(406) :
error C2381: 'exit' : redefinition; __declspec(noreturn) differs
c:/opengl/toolkits/includes/gl/glut.h(146) : see declaration of 'exit'
这个问题好像是因为包含文件时glut.h在stdlib.h的前面。改下顺序就可以解决这个问题。
把
#include <GL/glut.h>
#include <stdlib.h>
改成
#include <stdlib.h>
#include <GL/glut.h>