2012-10-09 29 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无论如何.. 它会工作