OpenGL32.Lib无法正确链接

OpenGL32.lib not linking properly

本文关键字:链接 Lib OpenGL32      更新时间:2023-10-16

由于某种原因,我的OpenGL库文件未正确链接到Visual Studio2013。

这是我的所有代码:

#include <glglew.h>
#include <GLGL.h>
#include <GLGLU.h>
#include <GLfreeglut.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系列图形卡的64倍Windows 8.1盒子,并为该卡提供了全新的驱动程序。有人对可能发生的事情有任何想法吗?

问题是链接器找不到OpenGL32.lib文件。尝试根据VC2013找到它。确保将其路径包括在其他库路径中。如果不存在 - 添加。如果您找不到库 - 安装Windows SDK。OpenGl32.lib的64位版本(忽略库中的32个,并不意味着任何内容)应在%programFiles% Microsoft SDKS Windows \ lib \ lib x64 Directory下。将此路径添加到您项目的LIB路径中。

正如D'Artanian已经提到的,您必须与opengl32.lib(不是DLL)链接。

我遇到了完全相同的问题,有助于明确设置我需要链接的库(project options-> linker->输入)。为链接器设置一个附加目录是不够的,您必须将路径设置为库构建以进行适当的体系结构。(在我的系统上,有点不直觉:32B版本是%ProgramFiles%Microsoft SDKsWindowsv7.1ALibOpenGL32.Lib和64B版本是%ProgramFiles%Microsoft SDKsWindowsv7.1ALibx64OpenGL32.Lib