2013-07-29 57 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

然后单击向上箭头,直到获得第一

相关问题