win7+vs2010下开发32位和64位程序glut配置方法

虽然做了一段时间OPENGL的开发,博主仍然算是一个小菜,最近折腾glut配置开发64位的程序,差点折腾死我。把我的经验写下来,仅供参考,也可以防止后来人犯同样的错误。

一、glut库的下载。

32位版的很好找,网上一找一堆,可是64位版的相对比较难找,更有人说glut不支持64位的开发,搞的小菜一度想放弃。就在我快要放弃的时候,一个大神跳出来跟我说,纳尼,谁说没有64bit的??!!

不多说,直接给网址:http://download.csdn.net/detail/knownall/6799947这是glut3.7.6,里面包含debug/release,32bit和64bit。

当然也可以选择下载源码自己编译: http://download.csdn.net/detail/knownall/6799967 自己编译的应该感觉起来比较爽,小菜便是这么做滴。

二、32位程序配置

开发环境:win7 64bit 旗舰版 + vs2010

1、先给文件找位置:解压得到glut.h,glut32.lib,glut32.dll三个文件,

glut.h放到x:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include\gl文件夹下,这个文件夹下还有opengl.h 和glu.h.,你的文件夹可能和这个不一样,自己系统文件夹里搜索opengl.h的位置就可以了;

glut32.lib放到:x:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib;

glut32.dll放到:x:\Windows\SysWOW64,这里一定要注意,在64bit操作系统里,32bit的dll一定要放到这个文件夹下,否则提示找不到的。

扫描二维码关注公众号,回复: 2530540 查看本文章

2、新建一个空的win32 控制台应用程序,添加glut.cpp,将下面的代码拷贝进去,编译运行,一条直线就出来了。本来还需要包含opengl.h 和glu.h的,这两个文件已经在glut.h 中包含了,所以不是必须的。

#include <GL/glut.h>
void init(void)
{
	glClearColor(1.0,1.0,1.0,0.0);
	glMatrixMode(GL_PROJECTION);
	gluOrtho2D(0.0,200.0,0.0,100.0);
}

void line(void)
{
	glClear(GL_COLOR_BUFFER_BIT);
	glColor3f(1.0,0.0,0.0);
	glBegin(GL_LINES);
	glVertex2i(100,0);
	glVertex2i(0,75);
	glEnd();

	glFlush();
}

void main(int argc, char **argv)
{
	glutInit(&argc,argv);
	glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
	glutInitWindowPosition(100,100);
	glutInitWindowSize(400,300);
	glutCreateWindow("测试");

	init();
	glutDisplayFunc(line);
	glutMainLoop();
}

三、开发64位程序配置

开发环境:win7 64位旗舰版 + vs2010

1、同样是先给文件找位置:解压得到glut.h,glut64.lib,glut64.dll三个文件,

glut.h放到x:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include\gl文件夹下,这个和32位的一样;

glut64.lib放到:x:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib\x64下,(注意!!)这里多了个x64;

glut64.dll放到:x:\Windows\System32,这里一定要注意,在64bit操作系统里,64bit的dll一定要放到这个文件夹下,跟我们平时的感觉好像不大一样。

2、跟32位的一样,建工程,拷贝代码,注意下面的步骤就不一样了。

3、右击解决方案选配置管理器,把工程配置为x64,如果没有的话,需要新建一个。

4、在#include <GL\glut.h>一句的前面添加一个预定义:#define GLUT_BUILDING_LIB。当然你也可以右击工程-->属性-->C\C++-->预处理器-->预处理器定义里添加:GLUT_BUILDING_LIB ,效果是一样的。原因是在glut.h里面有下面一段代码

# if !defined(GLUT_BUILDING_LIB) && !defined(GLUT_NO_LIB_PRAGMA)
#  pragma comment (lib, "winmm.lib")      /* link with Windows MultiMedia lib */
/* To enable automatic SGI OpenGL for Windows library usage for GLUT,
   define GLUT_USE_SGI_OPENGL in your compile preprocessor options.  */
#  ifdef GLUT_USE_SGI_OPENGL
#   pragma comment (lib, "opengl.lib")    /* link with SGI OpenGL for Windows lib */
#   pragma comment (lib, "glu.lib")       /* link with SGI OpenGL Utility lib */
#   pragma comment (lib, "glut.lib")      /* link with Win32 GLUT for SGI OpenGL lib */
#  else
#   pragma comment (lib, "opengl32.lib")  /* link with Microsoft OpenGL lib */
#   pragma comment (lib, "glu32.lib")     /* link with Microsoft OpenGL Utility lib */
#   pragma comment (lib, "glut32.lib")    /* link with Win32 GLUT lib */
#  endif
# endif

也就是说glut库默认情况下是加载32位库的,所以加一个预定义就可以不再加载。

5、第4步把默认加载的lib文件都去掉了,怎么办呢,就需要你在右击工程-->属性-->链接器-->输入-->附加依赖项里添加:opengl32.lib,glu32.lib,glut64.lib;这里有人要问,为什么opengl和glu是32位的库呢?opengl和glu都是系统里的东西,小菜也没找到别的,而且这个32是可以用的,坐等大神来告诉我们为什么了。

6、大功告成,编译,生成,执行,done!!还是原来的配方,还是原来的味道哈哈~

四、如果你换了台电脑编程怎么办,那台电脑没配glut怎么办?熟悉vs编程的人还有一种办法,这是小菜更喜欢的方式,就是将glut.h,glut.lib放到工程目录下的一个文件夹里,

例如:小菜在glut.vcxproj同目录下新建一个文件夹角OPENGL,再把glut.h,glut32.lib,glut64.lib统统放进去,再小改一下glut.cpp:

#pragma comment(lib,"opengl32.lib")
#pragma comment(lib,"glu32.lib")
#pragma comment(lib,"OPENGL\\glut64.lib")


这样lib的问题就搞定了,再将glut32.dll,glut64.dll分别拷到生成文件所在的目录,无论你把程序拿到哪里,都不不用再动文件了,一劳永逸。

 更多更及时的博客更新请戳--->  [KingRumn](http://zm913.xyz "KingRumn的Blog")

参考资料:

http://www.cnkinect.com/thread-15138-1-1.html

http://hi.baidu.com/cj326/item/5ea83e1c16b1b36970d5e848

猜你喜欢

转载自blog.csdn.net/KnownAll/article/details/17758847