在VS 2010中加入:未解析的外部符号__imp__glewInit

时间:2011-01-17 08:05:44

标签: visual-studio-2010

我正在按照红皮书学习OpenGL。 当我到第90页左右时,我需要使用glGenBuffers(); 然后我需要安装“glew”。 按照以下步骤操作 www.cs.uiowa.edu/~cwyman/classes/common/howto/winGLUT.html

我从glew.zip下载glew.sourceforge.net/并解压缩文件。

我把

    glew.h
  • C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Includeglew32.lib
  • C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Libglew32.dll
  • C:\Windows\System32

之后,我在VS 2010中构建我的项目,在Linker->input中,我添加了依赖项glew32.lib

但是当我构建它时,我有错误

unresolved external symbol __imp__glewInit

我花了一整天的时间来搜索解决方案,但没有找到解决方案。

希望有人能帮助我。

5 个答案:

答案 0 :(得分:36)

由于它没有被提及,我的问题是我正在链接glew的静态版本(glew32s.lib),但我没有定义GLEW_STATIC预处理器符号(所以我正在编译的头文件实际上与我链接的库不匹配。)

答案 1 :(得分:7)

就像汉斯帕斯特先前所说的那样(他早些时候回答了我的问题但删除了答案。)

我需要编译glew的源代码。

如何编译,请参阅OpenGL: How to compile glew32.dll from source file

然后您将获得glew32d.dllglew32d.lib

  • glew32d.dll放入c:\windows\sysWOW64(我也将其放入systemsystem32)。
  • glew32d.lib放入C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib
  • glew.h放入C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include

然后它会起作用。

答案 2 :(得分:5)

另一种可能的解决方案,比从源代码编译dll更少的工作就是使用32位二进制文​​件。 Windows 7 64bit只是不想与他们目前可用的64位二进制文​​件合作。

如果有人需要,这是一个非常一般的设置指南。 http://openglbook.com/setting-up-opengl-glew-and-freeglut-in-visual-c/

答案 3 :(得分:1)

还要确保为其添加适当的包含。我做了所有疯狂的库东西,不知何故忘了实际包含头文件。

就我而言:

#include <GL/glew.h>

答案 4 :(得分:1)

我也挣扎了几个小时。然后我意识到我的程序是win32而不是x64。当我在win32文件夹下使用glew.lib时,我在g64文件夹下包含了glew.lib。