【问题标题】:LNK2019 glewInitLNK2019 glewInit
【发布时间】:2014-08-02 05:57:30
【问题描述】:

我有 glew 版本 1.9.0 我已将所有头文件放在 MSVS 包含目录中,并将所有 lib 文件放在 lib 文件夹中。然后我将 dll 放在 sysWOW64 文件夹中,并在项目属性下添加了附加依赖项中所需的所有库:

  • opengl32.lib
  • glu32.lib
  • glut32.lib
  • glew32.lib
  • glew32mx.lib
  • glew32s.lib
  • glew32mxs.lib

但是我得到一个链接器错误

错误 1 ​​错误 LNK2019:未解析的外部符号 _glewInit@0 在函数 _main C:\Users\x\documents\visual studio 2013\Projects\openGLTest\openGLTest\main.obj openGLTest 中引用

【问题讨论】:

    标签: visual-studio opengl linker-errors unresolved-external


    【解决方案1】:

    首先,您不应将 DLL 放入 sysWOW64 或任何其他操作系统拥有的目录,例如 System32。也就是说,这与您放置 DLL 的位置无关,也与您链接到(或者更确切地说没有链接到)的库有关。

    您也不应该链接到 4 种不同的 GLEW 配置:

    1. 动态 (glew32)
    2. 动态多上下文 (glew32mx)
    3. 静态 (glew32s)
    4. 静态多上下文 (glew32mxs)

    链接到的最佳库通常是 glew32s.lib,因为它首先不需要 DLL,但是您需要在 #include "glew.h" 之前添加 #define GLEW_STATIC

    在 MSVC 中,您可以将以下内容添加到源文件中以一次性处理所有这些内容:

    #pragma comment (lib, "glew32s.lib")
    #define GLEW_STATIC
    #include "glew.h"
    

    【讨论】:

    • 嗨@Andon 我执行了你所说的但是我仍然遇到同样的错误
    • 您是否删除了最初作为依赖项的 4 个不同的 GLEW 库?如果您真的尝试链接到所有 4 个,它们将产生符号冲突。
    • 我将 glew32s 留在了依赖项中,但删除了其他的。我还应该删除 glew32s 吗?我还添加了您刚才提到的代码,但也没有解决
    • 是的,不要将头文件或库放在 MSVC 的目录中。将它们放在相对于项目根目录的目录中。我在自己的软件中使用<project>/platform/OpenGL/glew32s.lib<project>/platform/OpenGL/glew.h。在 MSVC 中,我有 #pragma comment (lib, "platform/OpenGL/glew32s.lib")#include "platform/OpenGL/glew.h"。你可以使用任何你想要的约定,但这就是我用来存储平台/子系统特定的头文件和库的方式,而不需要额外的安装步骤来修改你的 MSVC 安装。
    • 我会试一试,只是我遵循了这篇文章中的第二个建议。我用 glut 做的,但似乎没有用 glew stackoverflow.com/questions/12171317/…
    【解决方案2】:

    我找到了这个问题的解决方案here

    • 包含头文件:

      1. 右击你的project > Properties > Configuration > C/C++ > General > Additional Include Directories
      2. 在右侧下拉菜单中,单击<Edit...>
      3. Additional Inclue Directories 出现了
      4. 点击new line icon > browse button然后选择glew包含文件夹:$(your path to glew)\glew-1.12.0\include
    • 包括库

      1. 右键单击您的项目> Properties > Configuratio Properties > Linker > General > Additional Library Directories
      2. 点击<Edit...>
      3. Additional Library Directories 出现了
      4. 对于 64 位版本:添加 $(your path to glew)\glew-1.12.0\lib\Release\x64
      5. 对于 32 位版本:添加 $(your path to glew)\glew-1.12.0\lib\Release\Win32
      6. 右键单击您的项目(再次)>Properties > Configuration Properties > Linker > Input > Additional Dependencies
      7. 点击<Edit..>
      8. Additional Dependencies 窗口已出现
      9. 点击白色区域写glew32.lib

    (旁注:接受的答案并没有解决问题)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-11
      • 1970-01-01
      • 1970-01-01
      • 2021-04-20
      • 1970-01-01
      相关资源
      最近更新 更多