在项目中编译 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 编译为添加到项目中的源文件,请使用以下步骤:
唯一需要的文件是 glew.c
。删除 glewinfo.c
和 visualinfo.c
- 这些只是 GLEW 提供的示例程序。此步骤将解决缺少的 glu*
符号。
将 GLEW_STATIC
添加到预处理器定义列表。默认是把GLEW编译成DLL。
将 opengl32.lib
添加到附加依赖项列表(在 Linker/Inputs 下)。这将解决缺少的 wgl*
符号。
或者,您可以考虑使用 GLEW 的 build/vc12
子文件夹下包含的项目文件来构建静态库,并 link 使用它或将项目 glew_static
添加到您的解决方案中.上面的第 2 步和第 3 步仍然是必要的。
顺便说一句,每个 Windows API 函数都有文档,并且描述了所需的库和 header。例如,docs for wglGetCurrentDC()
有一个 table 和 header,提供该功能的库和 DLL。
当我尝试编译我的 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 编译为添加到项目中的源文件,请使用以下步骤:
唯一需要的文件是
glew.c
。删除glewinfo.c
和visualinfo.c
- 这些只是 GLEW 提供的示例程序。此步骤将解决缺少的glu*
符号。将
GLEW_STATIC
添加到预处理器定义列表。默认是把GLEW编译成DLL。将
opengl32.lib
添加到附加依赖项列表(在 Linker/Inputs 下)。这将解决缺少的wgl*
符号。
或者,您可以考虑使用 GLEW 的 build/vc12
子文件夹下包含的项目文件来构建静态库,并 link 使用它或将项目 glew_static
添加到您的解决方案中.上面的第 2 步和第 3 步仍然是必要的。
顺便说一句,每个 Windows API 函数都有文档,并且描述了所需的库和 header。例如,docs for wglGetCurrentDC()
有一个 table 和 header,提供该功能的库和 DLL。