12

我正在使用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 )没有任何错误,我认为如果它是缺少库的问题,它也应该抱怨它。

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

有人有什么想法吗?:)

非常感谢大家的时间。这是非常受欢迎的。

4

2 回答 2

15

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

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

于 2013-07-30T16:16:15.897 回答
0

尝试放在#define GLEW_STATIC第一行:

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

-lglew32s首先放在链接库表中。

代码块:

项目>构建选项...>链接器设置>添加glew32s

然后单击向上箭头,直到它成为第一个

于 2017-01-03T18:53:56.853 回答