【问题标题】:Problems with GLEW using MinGW: Undefined reference to '_imp__glewExperimental.'使用 MinGW 的 GLEW 问题:未定义对“_imp__glewExperimental”的引用。
【发布时间】:2013-07-28 17:22:42
【问题描述】:

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

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

有人有什么想法吗? :)

非常感谢大家的宝贵时间。很受用。

【问题讨论】:

    标签: c opengl linker glew glfw


    【解决方案1】:

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

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

    【讨论】:

    • 嘿!我现在有一个非常相似的问题。我使用 MSYS 的 make 成功地用 MinGW 编译了 GLEW,但我仍然收到一些“未找到”的消息。您是否有机会记住您的编译/链接命令或可以轻松地复制它?谢谢!
    • 我遇到了同样的问题,g++ -o test.exe test.cpp -I include -L lib -D GLEW_STATIC -lglew32 -lopengl32 给出了同样的错误undefined reference to `glewInit@0'。我是否缺少任何其他需要链接的库?
    • 好吧,原来我使用的是 32 位版本的 MinGW 和 64 位版本的 glfw。将 PATH 变量更改为 64 位版本的 MinGW 修复了它。
    【解决方案2】:

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

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

    并将-lglew32s 放在链接库表的首位。

    代码块:

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

    然后点击向上箭头直到它出现在第一位

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-26
      • 2016-10-06
      • 2015-02-14
      • 1970-01-01
      • 1970-01-01
      • 2021-04-02
      • 1970-01-01
      相关资源
      最近更新 更多