OpenGL32.lib没有正确链接

时间:2014-03-06 17:30:14

标签: 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;
}

我在自己的系统上编译了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)

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

正如D&#39; artanian已经提到过,你必须链接opengl32.lib(不是DLL)。

我有完全相同的问题,有什么帮助明确设置我需要链接的库(项目选项 - &gt;链接器 - &gt;输入)。为链接器设置其他目录是不够的,您必须为适当的体系结构设置库构建的路径。 (在我的系统上,它有点不直观:32b版本为%ProgramFiles%\Microsoft SDKs\Windows\v7.1A\Lib\OpenGL32.Lib,64b版本为%ProgramFiles%\Microsoft SDKs\Windows\v7.1A\Lib\x64\OpenGL32.Lib