Программа OpenGL компилируется, но не запускается правильно - PullRequest
1 голос
/ 17 марта 2020

Я пробую OpenGL и C ++, и я следовал этому видеоурою при написании моей программы (мой код точно такой же, как и у него). Я также следовал инструкциям на сайте freeglut здесь , чтобы настроить freeglut, скомпилировать и связать мою программу. Исходный код компилируется без проблем, но когда я пытаюсь запустить exe, я получаю сообщение об ошибке. Единственная причина, о которой я мог подумать, это то, что я не использую IDE, поэтому я, вероятно, пропускаю некоторые шаги компиляции или пропускаю некоторые аргументы командной строки при запуске exe, что IDE сделала бы автоматически. Может кто-нибудь сказать мне, что мне нужно сделать, чтобы правильно запустить мою программу?

Вот мой код:

#include <GL/glut.h>

void init() {
    glClearColor(1.0, 1.0, 0.0, 1.0);
}

void display() {
    glClear(GL_COLOR_BUFFER_BIT);
    glLoadIdentity();


    glFlush();
}

int main(int argc, char **argv) {
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB);

    glutInitWindowPosition(200, 100);
    glutInitWindowSize(500, 500);

    glutCreateWindow("Window 1");

    glutDisplayFunc(display);
    init();

    glutMainLoop();
}

Когда я компилирую, я запускаю

gcc -c -o hello.o hello.cpp -I"C:\MinGW\include"
gcc -o hello.exe hello.o -L"C:\MinGW\lib" -lfreeglut -lopengl32 -Wl,--subsystem,windows

Затем я попробуйте запустить hello.exe, но я получаю только сообщение об ошибке "Приложение не может запуститься правильно (0xc000007b)".

Кстати, я видел этот повторяющийся вопрос , но я пытался поставить DLL в том же каталоге (он был там с самого начала), но это ничего не изменило.

1 Ответ

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

Использование 32-битной dll freeglut (вместо 64-битной dll) в моем проекте решило проблему.

...