0

我刚刚安装了 OpenGL 库(实际上大部分源代码已经在我的计算机中完成)并且我尝试编译第一个程序。

但是,对于 x86,对于 x64,我配置并重定向 glut32.lib

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 的回答很有用。

我只是更改为在 x64 中编译使用 freegult 而不会出错。

4

2 回答 2

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 的一部分。它是一个 3rd 方框架库,用于创建小而简单的 OpenGL 演示。您实际上必须单独安装在系统上的那个。我建议使用 FreeGLUT(或者根本不使用 GLUT)。与 OpenGL 在 32 位和 64 位架构上的 DLL 都称为 opengl32.dll 不同,您需要特定于架构的 GLUT 版本才能正确编译。旧的 GLUT 未维护,因此没有 64 位版本。因此我对 FreeGLUT 的推荐。

于 2012-10-09T13:49:40.760 回答
0

我做了简单的步骤,它对我有用 1)项目属性 2)将配置设置为所有配置集 3)将 PLATFORM 设置为 ALL PLATFORM 添加然后添加库,包括头文件。如果不起作用,则从主项目窗口 Ex 更改配置和平台。调试/发布和 x64/x86 等等.. 它会工作

于 2016-12-16T12:11:53.000 回答