2013-07-29 100 views
10

我正在使用GLEW版本1.10.0與MinGW(通過CodeBlocks IDE),在Windows 8上運行。我從GLEW網站下載了Windows二進制文件,並鏈接到該版本包含的庫。使用MinGW的GLEW問題:未定義的引用'_imp__glewExperimental。'

我有一個鏈接問題,我似乎無法找到答案。我已經在GLEW主頁上進行了安裝。我引用了glew32.lib的鏈接器,以及其他所需的庫,如opengl32和glu32。

不幸的是,編譯此代碼(我還使用GLFW上下文/窗口管理):

#include <stdio.h> 
#include <GL/glew.h> 
#include <GLFW/glfw3.h> 

#define TRUE 1 
#define FALSE 0 

int main() 
{ 
GLFWwindow *window; 

if (!glfwInit()) 
    return -1; 

glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3.0); 
window = glfwCreateWindow(640, 480, "Hello World!", NULL, NULL); 

if (!window) 
{ 
    glfwTerminate(); 
    return -1; 
} 

glfwMakeContextCurrent(window); 

// Initialize GLEW 
glewExperimental=TRUE; 
GLenum err = glewInit(); 
if (err!=GLEW_OK) 
    fprintf(stderr, "Could not initialize GLEW!"); 

printf("%s\n", glGetString(GL_VERSION)); 
while (!glfwWindowShouldClose(window)) 
{ 
    glClearColor(0.0, 0.0, 0.0, 0.0); 
    glClear(GL_COLOR_BUFFER_BIT); 

    glfwSwapBuffers(window); 

    glfwPollEvents(); 
} 

glfwTerminate(); 
return 0; 
} 

我得到的錯誤:

*未定義參考小鬼 _glewExperimental *

即使我是C新手,據我瞭解,這意味着我指的是沒有定義的東西,這通常意味着庫缺失。在這種情況下,我的已將包含在庫中,並且我沒有發現任何有關其他GLEW引用的錯誤,例如glewInit,我覺得它應該也抱怨應該是缺少庫的問題。

我試過搜索網頁,但我根本沒有發現任何關於這個問題。

任何人有任何想法? :)

非常感謝你的時間。這是非常appriciated。

回答

15

看來我已經解決了這個問題。對於任何想要知道的人來說,問題似乎是GLEW網站預先編譯的Windows二進制文件,因爲它們來源於Visual Studio(它們是.lib文件)。我使用MinGW編譯。一旦我嘗試使用MinGW自己編譯GLEW來創建.a歸檔文件,它就起作用了。

關於如何爲MinGW編譯GLEW,在這裏已經有了一個很好的答案,可以在here找到。

+0

嘿!我現在有一個非常類似的問題。我使用MSYS的'make'編譯了MinGW的GLEW,但仍然收到了一些'not found'消息。你有沒有記得你的編譯/鏈接命令或可以輕鬆地重現它?謝謝! – InvisiblePanda

+0

我遇到同樣的問題,'g ++ -o test.exe test.cpp -I include -L lib -D GLEW_STATIC -lglew32 -lopengl32'給出同樣的錯誤'未定義的引用\'glewInit @ 0''。我是否缺少需要鏈接的其他庫? – Jespertheend

+0

好吧,事實證明,我正在使用32位版本的MinGW和64位版本的glfw。將PATH變量更改爲64位版本的MinGW修復了它。 – Jespertheend

0

儘量把#define GLEW_STATIC在第一行:

#define GLEW_STATIC 
#include <stdio.h> 
#include <GL/glew.h> 
#include <GLFW/glfw3.h> 

,並把-lglew32s首位鏈接庫表。

代碼塊:

項目>編譯選項...>連接設置>添加glew32s

然後單擊向上箭頭,直到獲得第一

相關問題