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

时间:2016-05-19 18:13:02

标签: c++ windows opengl

我正在使用现代的openGL 3.3。这些库是用于窗口的glfw-3.1.1和用于OpenGL内容的glew-1.12.0。我用visual studio 2012构建了所有的库。基本上一切都在运行,但是一旦我使用这行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.0\VC\BIN\cl.EXE"' : return code '0x2'

一旦我与opengl32.lib相关联,就可以了。我的问题是当我在Windows中使用OpenGL时,我是否总是链接到前面的lib。

2 个答案:

答案 0 :(得分:2)

glDrawArrays是一个功能。自从OpenGL-1.1引入顶点阵列以来,它已经成为其中的一部分,因此它从20年前就开始存在。因此,它不是通过扩展机制暴露的任何东西的一部分,而是通过好的旧opengl32.dll - 如果你想使用OpenGL,你总是需要链接到BTW。一些OpenGL加载器将在幕后为您完成,但如果您在Windows中使用OpenGL,则始终链接到opengl32.dll

答案 1 :(得分:0)

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

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