OpenGL32.lib 未正确链接

wma*_*ees 5 c++ opengl visual-studio-2013

出于某种原因,我的 OpenGL 库文件没有为 Visual Studio 2013 正确链接。

这是我的所有代码:

#include <gl\glew.h>
#include <GL\GL.h>
#include <GL\GLU.h>
#include <GL\freeglut.h>

#include <iostream>
#include <cstdlib>

#pragma comment( lib, "OpenGL32.lib" )
#pragma comment( lib, "glu32.lib" )
#pragma comment( lib, "freeglut.lib" )

void init( void );
void display( void );

int main( int argc, char* argv[] )
{
    glutInit( &argc, argv );
    glutInitDisplayMode( GLUT_RGBA );
    glutInitWindowSize( 512, 512 );
    glutInitContextVersion( 4, 0 );
    glutInitContextProfile( GLUT_CORE_PROFILE );
    glutCreateWindow( argv[0] );

    glutDisplayFunc( display );

    glutMainLoop();

    return EXIT_SUCCESS;
}

void init( void ) { }

void display( void )
{
    glClear( GL_COLOR_BUFFER_BIT );

    return;
}
Run Code Online (Sandbox Code Playgroud)

我在自己的系统上编译了 freeglut,如果我删除了与 OpenGL32.lib 相关的任何内容,我不会从程序中得到任何错误。(即,如果我删除 glClear() 函数,我的程序编译并运行没有问题。)一旦我添加任何 GL 命令,尽管我开始收到链接错误。

1>main.obj : error LNK2019: unresolved external symbol __imp__glClear@4 referenced in function "void __cdecl display(void)" (?display@@YAXXZ)
Run Code Online (Sandbox Code Playgroud)

我还尝试取出 #pragma 指令并将 OpenGL32.lib 文件添加到链接器的附加依赖项中,并且我尝试在程序中的其他任何内容之前调用 #pragma 指令,但无济于事。我正在运行带有 AMD Radeon 7700 HD 系列显卡和用于该显卡的全新驱动程序的 64x Windows 8.1 机器。有人对可能发生的事情有任何想法吗?

D'a*_*ian 4

问题是链接器找不到 opengl32.lib 文件。尝试在VC2013下找到它。确保它的路径包含在其他库路径中。如果不存在 - 添加它。如果您没有找到该库 - 安装 Windows SDK。64位版本的opengl32.lib(忽略库中的32,它没有任何意义)应该位于%ProgramFiles%\Microsoft SDKs\Windows\\Lib\x64目录下。将此路径添加到项目的 lib 路径中。