静态链接库时出现 glew 链接器错误
Linker error with glew when library is statically linked
我正在尝试在 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
为什么会出现这个错误?我尝试重建解决方案,但这也无济于事。任何建议都会有所帮助。
您的 linker 设置有两个问题:
您可以 link 对抗 glew 的静态 linked 版本或动态 linked 版本,但绝不能同时对抗两者。因此,如果你想静态 linked 从附加依赖项中删除 glew32d.lib
(或 glew32.lib
在发布模式下)。
Glew 要求您还 link 再次访问 opengl 库。将 OpenGL32.lib
添加到附加依赖项中。
我正在尝试在 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
为什么会出现这个错误?我尝试重建解决方案,但这也无济于事。任何建议都会有所帮助。
您的 linker 设置有两个问题:
您可以 link 对抗 glew 的静态 linked 版本或动态 linked 版本,但绝不能同时对抗两者。因此,如果你想静态 linked 从附加依赖项中删除
glew32d.lib
(或glew32.lib
在发布模式下)。Glew 要求您还 link 再次访问 opengl 库。将
OpenGL32.lib
添加到附加依赖项中。