vs2010+win7(64)无法链接glew的解决办法

来源:互联网 发布:mac u盘装系统win7 编辑:程序博客网 时间:2024/06/06 03:32

近接触glew,但是,下了几个文件都没有办法链接,老是出现下面的错误

[plain] view plain copy
  1. 1>main.obj : error LNK2019: 无法解析的外部符号 __imp__glewGetString@4,该符号在函数 _init 中被引用  
  2. 1>main.obj : error LNK2019: 无法解析的外部符号 __imp__glewInit@0,该符号在函数 _init 中被引用  
  3. 1>Release\gpu_sph.exe : fatal error LNK1120: 2 个无法解析的外部命令  

上网找了很多方法,基于解决我的问题,在此,我也总结一下链接失败的一些解决方法:

方法1:自己编译,这种方法,最后编译生成的文件拷贝到相应文件夹

方法2:更改代码,或者采取其他连接方式

以上两种方法,我都进行了尝试,可是都没有得到解决,但是,我尝试了在#include <GL/glew.h>前面加上#define GLEW_STATIC,编译之后,得到了新的错误提示:

[plain] view plain copy
  1. <span style="font-size:14px;">1>gpu_util.obj : error LNK2001: 无法解析的外部符号 ___glewMultiTexCoord1fARB  
  2. 1>gpu_util.obj : error LNK2001: 无法解析的外部符号 ___glewMultiTexCoord2fARB  
  3. 1>gpu_util.obj : error LNK2001: 无法解析的外部符号 ___wglewGetPbufferDCARB  
  4. 1>gpu_util.obj : error LNK2001: 无法解析的外部符号 ___wglewCreatePbufferARB  
  5. 1>gpu_util.obj : error LNK2001: 无法解析的外部符号 ___wglewChoosePixelFormatARB  
  6. 1>gpu_util.obj : error LNK2001: 无法解析的外部符号 ___wglewBindTexImageARB  
  7. 1>gpu_util.obj : error LNK2001: 无法解析的外部符号 ___glewActiveTextureARB  
  8. 1>main.obj : error LNK2001: 无法解析的外部符号 ___glewActiveTextureARB  
  9. 1>main.obj : error LNK2019: 无法解析的外部符号 _glewGetString@4,该符号在函数 _init 中被引用  
  10. 1>main.obj : error LNK2019: 无法解析的外部符号 _glewInit@0,该符号在函数 _init 中被引用  
  11. 1>Release\gpu_sph.exe : fatal error LNK1120: 9 个无法解析的外部命令</span>  

我检查了自己的lib文件的链接还有附加库的目录都没有问题,后来在一个国外网站找到了解决的办法:

You have now set up the project to include the appropriate headers and build against the correct libraries. These particular instructions will treat GLEW and GLUT as "dynamically linked" libraries. This means that you will have to distribute the glut32.dll and glew32.dll files along with your program for users without GLUT and GLEW installed. GLEW gives you the option of "static linking," which allows you to avoid redistributing glew32.dll. To do this, #define GLEW_STATIC before the #include <GL/glew.h> line. Also choose to link against glew32s.lib instead of glew32.lib.

按照他的说法,我尝试了把glew32.lib改为glew32s.lib(前提,你要把glew32s.lib已经拷贝到了lib文件夹下面),还有要把链接器->常规里面的附加库的目录设为glew32s.lib所在的文件夹

点击调试,ok!!!

弄了一天,终于搞定了。

所以,增加一个方法

方法3:就是把glew32.lib改为glew32s.lib,把链接器->常规里面的附加库的目录设为glew.lib所在的文件夹,在#include <GL/glew.h>前面加上#define GLEW_STATIC


我是使用方法3解决这个问题的。里面glew32是静态库,不需要对应dll文件的。


原创粉丝点击