这个问题在这里已有答案:
当我尝试编译我的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。
编辑:这不仅是未解析的外部符号的一般示例。我问的是我需要包含哪些库来修复错误。
要将GLEW编译为添加到项目中的源文件,请使用以下步骤:
glew.c
。删除glewinfo.c
和visualinfo.c
- 这些只是GLEW提供的示例程序。此步骤将解决缺少的glu*
符号。GLEW_STATIC
添加到预处理程序定义列表中。默认是将GLEW编译为DLL。opengl32.lib
添加到Additional Dependencies列表(在Linker / Inputs下)。这将解决丢失的wgl*
符号。或者,您可以考虑使用GLEW的build/vc12
子文件夹下包含的项目文件来构建静态库并与之链接或将项目glew_static
添加到您的解决方案中。上述步骤2和3仍然是必要的。
顺便说一下,每个Windows API函数都有记录,并描述了所需的库和头文件。例如,docs for wglGetCurrentDC()
有一个表,其中包含提供该功能的头,库和DLL。