天天看點

[VS2013+Win7]GLEW庫配置問題 error LNK2019: 無法解析的外部符号 [email protected]

先說下載下傳安裝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的方法貌似能解決所有問題。是以發出來

繼續閱讀