Неопределенная ссылка с GLUT для MinGW - PullRequest
0 голосов
/ 16 марта 2020

Вот мой каталог:

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

I получить следующие ошибки:

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-g cc. Ничего не помогло, я надеюсь, что кто-то может пролить свет на это.

РЕДАКТИРОВАТЬ: Я также добавил glut32.dll в system32 без удачи.

1 Ответ

0 голосов
/ 17 марта 2020

С этого веб-сайта можно загрузить двоичные файлы freeglut , предварительно созданные с MinGW . Вам необходимо загрузить пакет freeglut 3.0.0 MinGW , а не пакет freeglut 3.0.0 MSV C , созданный для Microsoft C.

Извлеките каталоги include и lib в каталог приложения, чтобы вы могли использовать относительный путь. Я скачал и протестировал; эти 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

ps Make уверен, что вы также извлекли файл freeglut.dll в каталог исполняемых файлов.

...