我正在尝试在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
为什么会出现这个错误?我尝试重建解决方案,但这也没有帮助。任何建议都会有所帮助。
答案 0 :(得分:3)
链接器设置中存在两个问题:
您可以链接静态链接版本的glew或动态链接的版本,但绝不会同时针对两者。因此,如果您希望从其他依赖项中删除静态链接删除glew32d.lib
(或glew32.lib
在发布模式中)。
Glew要求您再次链接opengl库。将OpenGL32.lib
添加到其他依赖项。