为什么我必须链接到opengl32.lib
why do I have to link against opengl32.lib
我使用的是现代的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的名称。
相关文章:
- 如何指定我希望我的LIB链接到的DLL文件?-Visual Studio 2019
- JSON转换为nlohmann JSON-lib中的结构数组
- 为什么导入Mixed native/CLR lib.dll的本机C++应用程序没有在Mixed lib.dll中的外部变
- 使用 VS2015 在 Windows 10 上构建 Fortran .lib x64 位并将其链接到 C++
- 为什么我的链接器在找到Coin4d.lib后搜索Coin4sd.lib?
- libcpmtd.lib有什么用?
- LNK1104:无法打开libpjproject-i386-Win32-vc14-Debug-Static.lib
- 解析引用 |exe/dll vs lib
- 在 /usr/local/lib 下找不到库
- LLVM 编译:目标的配方 '../lib/IR/Release+Asserts/Intrinsics.gen.tmp' failed
- CMake 生成的 MSVC 项目找不到符号,即使为其相关 dll 正确生成了 lib 文件也是如此
- VS2015 未链接用户32.lib
- 从 .lib 文件创建一个.dll文件
- 看不到文件'SDL2.lib'
- 如何使用用户定义的函数覆盖 C lib 函数,如 _sbrk?
- 如何在不需要LIBCD.lib的情况下在Visual Studio 6中编译C项目
- opengl32.lib如何在Windows(仅1.1版本)上工作?它是否真正实现了OpenGL函数
- OpenGL32.Lib无法正确链接
- 为什么我必须链接到opengl32.lib
- 从哪里获得最新的OpenGL32.lib