【问题标题】:Undefined reference with GLUT for MinGWMinGW 的 GLUT 未定义引用
【发布时间】:2020-06-27 13:34:35
【问题描述】:

这是我的目录:

graphics/
    glut.h
    glut32.dll
    glut32.lib
    simple.c

这是我的程序:

#include <windows.h>
#include <GL/gl.h>
#include <GL/glext.h>
#include "glut.h"


void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT);

    glBegin(GL_POLYGON);
        glVertex2f(-0.5,-0.5);
        glVertex2f(-0.5,0.5);
        glVertex2f(0.5,0.5);
        glVertex2f(0.5,-0.5);
    glEnd();

    glFlush();
    return;
}

int main(int argc, char **argv)
{
    glutInit(&argc, argv);
    glutCreateWindow("simple");
    glutDisplayFunc(display);
    glutMainLoop();
}

当我尝试使用以下命令进行编译时

 gcc simple.c -o MyProg glut32.lib -lopengl32 -lglu32

我收到以下错误:

C:\Users\Jake\AppData\Local\Temp\ccehzclV.o:simple.c:(.text+0x28): undefined reference to `__imp___glutInitWithExit'
C:\Users\Jake\AppData\Local\Temp\ccehzclV.o:simple.c:(.text+0x52): undefined reference to `__imp___glutCreateWindowWithExit'
C:\Users\Jake\AppData\Local\Temp\ccehzclV.o:simple.c:(.text+0x7b): undefined reference to `__imp___glutCreateMenuWithExit'
C:\Users\Jake\AppData\Local\Temp\ccehzclV.o:simple.c:(.text+0x162): undefined reference to `__imp_glutDisplayFunc'
C:\Users\Jake\AppData\Local\Temp\ccehzclV.o:simple.c:(.text+0x16b): undefined reference to `__imp_glutMainLoop'
collect2.exe: error: ld returned 1 exit status

我已经尝试了所有可以找到的答案,我已经重新安装了 MinGW,并且我已经重新安装了 tdm-gcc。没有任何效果,我希望有人能对此有所了解。

编辑:我还没有运气将 glut32.dll 添加到 system32。

【问题讨论】:

  • 你能试试这个吗:gcc simple.c -o MyProg -lglut32 -lglu32 -lopengl32 -lmingw32
  • @ssd 现在收到错误:C:/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lglut32
  • 添加路径:gcc simple.c -o MyProg -lc:\path\to\the\file\glut32 -lglu32 -lopengl32 -lmingw32。更正一点:一旦您编译干净,您可能需要将glut32.dll 文件移动(或复制)到可执行路径(\Debug\Release)中。
  • -lc:\path\to\the\file\glut32 部分中的glut32glut32.lib(不要在编译行中键入.lib 扩展名)。但是,您需要复制到可执行文件文件夹路径中的文件是glut32.dll
  • @ssd 似乎找不到路径:gcc simple.c -o MyProg -l C:\Users\Jake\Desktop\graphics\glut32 -lglu32 -lopengl32 -lmingw32 返回错误:C:/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lC:\Users\Jake\Desktop\graphics\glut32

标签: c windows opengl gcc glut


【解决方案1】:

this 网站,您可以下载使用 MinGW 预构建的 freeglut 二进制文件。您需要下载“freeglut 3.0.0 MinGW 包”,而不是为 Microsoft C 构建的“freeglut 3.0.0 MSVC 包”。

includelib 目录提取到您的应用程序目录中,以便您可以使用相对路径。我已经下载并测试过;正如预期的那样,这些 freeglut 文件就像 glut 文件一样工作。编译命令行应为:

gcc simple.c -o MyProg -I"path/to/include/" -L"path/to/lib/" -lfreeglut -lopengl32

而且,如果您使用 64 位进行编译:

gcc simple.c -o MyProg -I"path/to/include/" -L"path/to/lib/x64/" -lfreeglut -lopengl32

附言 确保您也已将 freeglut.dll 文件解压缩到可执行目录中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-23
    • 1970-01-01
    • 1970-01-01
    • 2015-12-30
    • 2020-02-07
    • 1970-01-01
    相关资源
    最近更新 更多