2012-10-09 28 views
0

我剛剛安裝了OpenGL庫(實際上大部分源代碼已經在我的電腦上完成了),我嘗試編譯第一個程序。在64x模式下編譯OpenGL的錯誤

對於x86不過是完美運行,針對x64,我的配置和

Ç重定向glut32.lib:\程序文件(x86)\微軟的SDK \的Windows \ v7.0A \ Lib文件

C:\ Program Files文件(x86)的\微軟的SDK \的Windows \ v7.0A \ LIB \ x64的

錯誤發生如下,我不知道要解決這個問題。該錯誤好像我沒有正確鏈接庫?

error LNK2019: unresolved external symbol __imp_glutSwapBuffers referenced in function "void __cdecl drawcube(void)" ([email protected]@YAXXZ) 
error LNK2019: unresolved external symbol __imp_glutMainLoop referenced in function main 
error LNK2019: unresolved external symbol __imp_glutIdleFunc referenced in function main 
error LNK2019: unresolved external symbol __imp_glutDisplayFunc referenced in function main 

我的測試代碼是這樣的

<!-- language: cpp --> 
void drawcube(void) 
{ 

    glClear(GL_COLOR_BUFFER_BIT); 
    glColor3f(1.0, 1.0, 1.0); 
    glMatrixMode(GL_MODELVIEW); 
    glRotatef(angle, 0.0, 1.0, 0.0); 
    glBegin(GL_LINE_LOOP); 
    glVertex3iv(a); 
    glVertex3iv(b); 
    glVertex3iv(c); 
    glVertex3iv(d); 
    glEnd(); 
    glFlush(); 
    glutSwapBuffers(); 
} 

<!-- language: cpp --> 
int main(int argc, char **argv) 
{ 

    glutInit(&argc, argv); 
    glutInitWindowSize(800, 600); 
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); 
    glutCreateWindow("Test OpenGL"); 
    glutDisplayFunc(drawcube); 
    glutIdleFunc(drawcube); 
    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
    glOrtho(-30.0, 30.0, -30.0, 30.0, -30.0, 30.0); 
    glRotatef(30.0, 1.0, 0.0, 0.0); 
    glMatrixMode(GL_MODELVIEW); 
    glClearColor(0.0, 0.0, 0.0, 0.0); 
    glutMainLoop(); 

    return(0); 
} 

回答@datenwolf是有益的。

我只是改變使用freegult沒有錯誤在x64編譯。

回答

2

我剛剛安裝了OpenGL庫(實際上大部分來源都是在我的電腦上完成的),我嘗試編譯第一個程序。

咦?你的意思是你安裝了一個OpenGL capbable驅動程序(即從GPU製造商的網站上下載驅動程序,而不是使用隨Windows一起提供的損壞的驅動程序)? OpenGL通常不是以庫的形式出現的。這是一個通常以驅動程序形式存在的實現的規範。你也不需要特殊的「OpenGL SDK」,因爲所有的編譯器都提供了編譯OpenGL程序所需的所有東西。無論你安裝了什麼,你可能都不需要它,而且它會造成更多的傷害而不是好處。

error LNK2019: unresolved external symbol __imp_glutSwapBuffers referenced in function "void __cdecl drawcube(void)" ([email protected]@YAXXZ) 

嗯,這不是OpenGL的,這就是過剩。 GLUT不是OpenGL的一部分。這是一個第三方框架庫,用於創建小而簡單的OpenGL演示。 你實際上必須單獨安裝在你的系統上。我推薦使用FreeGLUT(或者根本不使用GLUT)。與32位和64位體系結構中的OpenGL不同,該DLL稱爲opengl32.dll,因此需要使用體系結構特定版本的GLUT才能正確編譯。舊的GLUT沒有維護,因此沒有64位版本。因此我對FreeGLUT的推薦。

+0

謝謝你的回答,可能是我對OpenGL和GLUT的誤解。讓我試試你的建議,我會接受你的答案。 :) 謝謝。 – mojiiz

+0

你的答案對我有幫助。但是,也許我需要獲得更多關於它們的知識。感謝您的回答。 – mojiiz

0

我做了簡單的步驟,它適用於設置配置應用到所有配置我 1)項目性質 2)設置 3)設置平臺,平臺所有 添加,然後添加庫,包含頭文件。 如果不工作,則從主項目窗口中更改配置和平臺 Ex。調試/發佈和x64/x86無論如何.. 它會工作