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

Cod*_*gle 10 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;
}
Run Code Online (Sandbox Code Playgroud)

我收到错误:

*对imp _glewExperimental*的未定义引用

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

我试图搜索网络,但我根本没有找到任何关于这个问题.

有人有任何想法吗?:)

非常感谢你的时间.它很受欢迎.

Cod*_*gle 15

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

关于如何为MinGW编译GLEW的stackoverflow已经有了很好的答案,可以在这里找到.