为什么我必须链接到opengl32.lib

why do I have to link against opengl32.lib

本文关键字:opengl32 lib 链接 为什么      更新时间:2023-10-16

我使用的是现代的openGL 3.3。对于窗口,库为glfw-3.1.1,对于OpenGL内容,库为glew-1.12.0。我已经用visualstudio2012构建了所有的libs。基本上所有的东西都在运行,然而,一旦我使用这行glDrawArrays(GL_TRIANGLES, 0, 3);,它就会抛出这个错误

main.obj : error LNK2019: unresolved external symbol __imp__glDrawArrays@12 referenced in function _main
test.exe : fatal error LNK1120: 1 unresolved externals
NMAKE : fatal error U1077: '"C:Program Files (x86)Microsoft Visual Studio 12.0VCBINcl.EXE"' : return code '0x2'

一旦我链接到opengl32.lib,它就起作用了。我的问题是,当我在Windows中使用OpenGL时,我是否总是要链接到前面的库。

glDrawArrays是一个函数。自从OpenGL-1.1引入顶点数组以来,它就一直是其中的一部分,所以它从20年前的一开始就一直存在。因此,它不是通过扩展机制公开的任何东西的一部分,而是通过良好的旧opengl32.dll公开的——如果你想使用OpenGL,你必须始终与之链接。一些OpenGL加载程序会在后台为您执行此操作,但如果您在Windows中使用OpenGL,则始终链接到opengl32.dll

我认为这里的困惑来自于想要使用OpenGL 3.3,但这样做会链接到opengl32.lib.

这里的32不是版本号,它来自WIN32,Windows C/C++API的名称。