我刚刚安装了OpenGL库(实际上已经在我的计算机上完成了大部分源代码),我尝试编译第一个程序。
对于x86运行完美,但对于我配置和重定向glut32.lib的x64
C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.0A \ Lib
到
C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.0A \ Lib \ x64
错误发生如下,我不知道解决这个问题。错误似乎我没有正确链接库?
error LNK2019: unresolved external symbol __imp_glutSwapBuffers referenced in function "void __cdecl drawcube(void)" (?drawcube@@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中已经编译。
答案 0 :(得分:2)
我刚刚安装了OpenGL库(实际上已经在我的计算机中完成了大部分源代码),我尝试编写第一个程序。
咦?你的意思是你安装了一个OpenGL可能的驱动程序(即从GPU制造商的网站下载驱动程序,而不是使用Windows附带的残缺驱动程序)? OpenGL通常不是以库的形式出现的。它是一种规范,通常以驱动程序的形式存在。此外,您不需要特殊的“OpenGL SDK”,因为所有编译器都附带编译OpenGL程序所需的所有内容。无论你安装什么,你可能都不需要它,它就像弊大于利。
error LNK2019: unresolved external symbol __imp_glutSwapBuffers referenced in function "void __cdecl drawcube(void)" (?drawcube@@YAXXZ)
嗯,那不是OpenGL,那是GLUT。而GLUT不是OpenGL的一部分。它是第三方框架库,用于创建小而简单的OpenGL演示。 你实际上必须单独安装在你的系统上。我建议使用FreeGLUT(或根本不使用GLUT)。与OpenGL不同,在32位和64位架构上,DLL被称为opengl32.dll,您需要特定于架构的GLUT版本才能正确编译。旧的GLUT没有维护,因此没有64位版本。因此我建议使用FreeGLUT。
答案 1 :(得分:0)
我做了一个简单的步骤,它适合我 1)项目属性 2)将配置设置为ALL CONFIGURATION设置 3)将PLATFORM设置为ALL PLATFORM 添加然后添加库,包含头文件。 如果不起作用,则从主项目窗口更改配置和平台 防爆。调试/发布和x64 / x86无论.. 它会起作用