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一定要放到這個文件夾下,否則提示找不到的。

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章