先說下載下傳安裝GLEW的方法:
http://glew.sourceforge.net/下載下傳包,裡面有win32和win64兩個版本,我雖然是x64,但是親測隻能用win32的
把頭檔案拷貝到VC/include/GL檔案夾,将win32的glew32.lib拷貝到VC/lib檔案夾,将win32的glew32.dll拷貝到C:\Windows\SysWOW64檔案夾
測試代碼為:
#include <GL/glew.h>
int main(){
const GLubyte * p = glGetString(GL_VERSION);
return 0;
}
錯誤為: 1>OpenGLVersion.obj : error LNK2019: 無法解析的外部符号 [email protected],該符号在函數 _main 中被引用
1>Visual Studio 2013\Projects\OpenGLVersion\Debug\OpenGLVersion.exe : fatal error LNK1120: 1 個無法解析的外部指令
這個問題,可能與軟體有關,是以建議大家把各個方法都試一試。
現在已經有一些博文是談這個問題的,建議先試試,都不行再來試試我的這個方法:
http://blog.csdn.net/vanlin5566/article/details/42384387
http://blog.csdn.net/huanghuibai/article/details/9503261
總結一下網上正常解決辦法有幾種:
1.右鍵單擊項目>屬性>連結器>輸入,添加依賴項glew32.dll
2.在前面添加#pragma comment(lib,"glew32.lib")
3.認為動态連結庫glew32.lib沒法用,但是靜态連結庫glew32s.lib可以用,是以在前面添加#deifne GLEW_STATIC,使用靜态庫。當然也就不需要glew32.dll了 。
以上方法我都試過了,但是無效,因為我的glew32.lib和glew32s.lib都沒法用。是以求助于其它庫的連結庫。
我的解決方法是:在開頭添加
#include <GL/glew.h>
#include <GL/freeglut.h> (這個庫你得自行下載下傳)
當然開頭如果有#define GLEW_STATIC也要删去
PS:有時glew庫并沒有被#include,但是其他庫使用了glew庫,出錯的根本原因還是在這,那麼就得在開頭添加這兩句
然後又遇到一個提示說找不到檔案freeglutd.lib,這個也很蹊跷,然後将freeglut.lib的檔案名改為了freeglutd.lib,然後就編譯通過了。
雖然方法很不雅但是也是一個将就的方案吧。借鑒于上面的方法3。
另外之前還試過一個方法,在項目>屬性>連結器>輸入>依賴項裡添加opengl32.lib,這段代碼是可以運作了,但是其他的包含glew.h的代碼仍然不能運作,是以這個方法不好。而添加freeglut.h的方法貌似能解決所有問題。是以發出來