【问题标题】:Linker error with glew when library is statically linked静态链接库时出现链接器错误
【发布时间】:2018-12-11 07:24:33
【问题描述】:

我正在尝试在 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

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

【问题讨论】:

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


    【解决方案1】:

    链接器设置有两个问题:

    • 您可以链接静态链接版本的glew 或动态链接版本,但不能同时链接两者。因此,如果您想要 glew 静态链接,请从其他依赖项中删除 glew32d.lib(或发布模式下的 glew32.lib)。

    • Glew 要求您还链接到 opengl 库。将OpenGL32.lib 添加到附加依赖项中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多