当库静态链接时链接器错误与glew

时间:2015-11-08 09:07:41

标签: opengl visual-studio-2012 static-libraries glew

我正在尝试在Visual Studio 2012中构建一个opengl项目。我想静态地包含glew库,所以我从源代码构建它并将生成的glew32sd.lib复制到我的lib目录。我将此lib路径提供给Visual Studio,并将“glew32sd.lib”放入VS中的其他依赖项中。

现在我在main.cpp中编译示例代码:

#define GLEW_STATIC
#include<GL/glew.h>
int main(){
    glewInit();
    return 0;
}

我收到以下错误:

1>  main.cpp
1>glew32sd.lib(glew.obj) : error LNK2019: unresolved external symbol __imp__glGetString@4 referenced in function _glewGetExtension@4
1>glew32sd.lib(glew.obj) : error LNK2019: unresolved external symbol __imp__wglGetCurrentDC@0 referenced in function _wglewInit@0
1>glew32sd.lib(glew.obj) : error LNK2019: unresolved external symbol __imp__wglGetProcAddress@4 referenced in function _wglewInit@0
1>C:\Projects\OpenGL\opengl\Debug\opengl.exe : fatal error LNK1120: 3 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

据我所知,这个错误应该是因为编译器找不到函数调用的定义。

以下是一些相关快照: The Library dependencies of my project

Path to libs

为什么会出现这个错误?我尝试重建解决方案,但这也没有帮助。任何建议都会有所帮助。

1 个答案:

答案 0 :(得分:3)

链接器设置中存在两个问题:

  • 您可以链接静态链接版本的glew或动态链接的版本,但绝不会同时针对两者。因此,如果您希望从其他依赖项中删除静态链接删除glew32d.lib(或glew32.lib在发布模式中)。

  • Glew要求您再次链接opengl库。将OpenGL32.lib添加到其他依赖项。