使用MinGW的GLEW问题:对'_imp__glewExperimental'的未定义引用。

时间:2013-07-29 02:35:23

标签: c opengl linker glew glfw

我正在使用 GLEW版本1.10.0 与MinGW(通过CodeBlocks IDE),在Windows 8上运行。我从GLEW网站下载了Windows二进制文件,并且已经链接到库包含在该版本中。

我有一个链接问题,我似乎无法找到答案。我已经按照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;
}

我收到错误:

*对 imp _glewExperimental *

的未定义引用

即使我是C的新手,据我所知,这意味着我指的是没有定义的东西,这通常意味着缺少了库。在这种情况下,我已经包含了库,并且我没有对我制作的其他GLEW引用有任何错误,例如 glewInit ,我觉得它也应该抱怨关于它应该是一个缺少库的问题。

我试图在网上搜索,但我根本没有找到关于这个问题的任何内容。

有人有任何想法吗? :)

非常感谢您的时间。它很受欢迎。

2 个答案:

答案 0 :(得分:15)

我似乎已经解决了这个问题。对于任何想知道的人来说,问题似乎是来自GLEW网站的预构建Windows二进制文件,因为它们来自Visual Studio(它们是.lib文件)。我正在使用MinGW进行编译。一旦我尝试使用MinGW编译GLEW来创建.a存档,它就可以工作。

这里有关于如何为MinGW编译GLEW的stackoverflow的一个很好的答案,可以在here找到。

答案 1 :(得分:0)

尝试将#define GLEW_STATIC放在第一行:

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

并将-lglew32s放在链接库表中。

码块:

项目&gt;构建选项...&gt;链接器设置&gt;添加glew32s

然后点击向上箭头直到它第一个