在项目中编译 GLEW 源代码导致无法解析的外部符号

Compiling GLEW source in a project results in unresolved external symbols

当我尝试编译我的 VS 2015 C++ 项目时,出现 9 个未解决的外部符号错误。当我尝试将 GLEW 编译为项目的一部分时(使用源代码)发生错误。 Google 搜索显示此错误通常是由于缺少 OpenGL 库引起的,但我已经在使用 SDL2,据我所知,它的源代码中包含 OpenGL。这是我尝试编译时的输出。

Error   LNK2001 unresolved external symbol __imp__wglGetCurrentDC@0 glew.obj    1   
Error   LNK2001 unresolved external symbol __imp__wglGetProcAddress@4   glew.obj    1   
Error   LNK2001 unresolved external symbol __imp__glGetString@4 glew.obj    1   
Error   LNK2001 unresolved external symbol __imp__glGetIntegerv@8   glew.obj    1   
Error   LNK2001 unresolved external symbol __imp__wglCreateContext@4    glewinfo.obj    1   
Error   LNK2001 unresolved external symbol __imp__wglDeleteContext@4    glewinfo.obj    1   
Error   LNK2001 unresolved external symbol __imp__wglMakeCurrent@8  glewinfo.obj    1   
Error   LNK2001 unresolved external symbol __imp__wglGetCurrentContext@0    visualinfo.obj  1   
Error   LNK2001 unresolved external symbol _gluGetString@   4visualinfo.obj     1   
Error   LNK1120 9 unresolved externals  Executable.exe  1   

如果我的项目中需要包含另一个库,我可以在哪里下载它?另外,如果有的话,有源代码吗?如果可能,我宁愿避免使用 .dll。

编辑:这不仅仅是未解析外部符号的一般示例。我在问我需要包含哪些库来修复错误。

要将 GLEW 编译为添加到项目中的源文件,请使用以下步骤:

  1. 唯一需要的文件是 glew.c。删除 glewinfo.cvisualinfo.c - 这些只是 GLEW 提供的示例程序。此步骤将解决缺少的 glu* 符号。

  2. GLEW_STATIC 添加到预处理器定义列表。默认是把GLEW编译成DLL。

  3. opengl32.lib 添加到附加依赖项列表(在 Linker/Inputs 下)。这将解决缺少的 wgl* 符号。

或者,您可以考虑使用 GLEW 的 build/vc12 子文件夹下包含的项目文件来构建静态库,并 link 使用它或将项目 glew_static 添加到您的解决方案中.上面的第 2 步和第 3 步仍然是必要的。

顺便说一句,每个 Windows API 函数都有文档,并且描述了所需的库和 header。例如,docs for wglGetCurrentDC() 有一个 table 和 header,提供该功能的库和 DLL。