在项目中编译GLEW源会导致未解析的外部符号[重复]

问题描述 投票:0回答:1

当我尝试编译我的VS 2015 C ++项目时,我得到了9个未解决的外部符号错误。当我尝试将GLEW编译为我的项目的一部分(使用源代码)时发生错误。 Google搜索显示此错误通常是由于缺少OpenGL库引起的,但我已经在使用SDL2,据我所知,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   

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

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

c++ opengl sdl glew
1个回答
0
投票

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

  1. 唯一需要的文件是glew.c。删除glewinfo.cvisualinfo.c - 这些只是GLEW提供的示例程序。此步骤将解决缺少的glu*符号。
  2. GLEW_STATIC添加到预处理程序定义列表中。默认是将GLEW编译为DLL。
  3. opengl32.lib添加到Additional Dependencies列表(在Linker / Inputs下)。这将解决丢失的wgl*符号。

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

顺便说一下,每个Windows API函数都有记录,并描述了所需的库和头文件。例如,docs for wglGetCurrentDC()有一个表,其中包含提供该功能的头,库和DLL。

© www.soinside.com 2019 - 2024. All rights reserved.