Программа перестает работать - graphics.h

Я создал программу, которая рисует прямоугольник, но как только она запускается, всплывает окно и говорит: «К сожалению, программа остановилась». Почему это происходит? Что я могу сделать, чтобы исправить это?

#include <iostream>
#include <graphics.h>

int main() {
initwindow(500, 300);
getch();
rectangle(200, 100, 200, 100);
closegraph();
}

person Orfeo Terkuci    schedule 30.06.2016    source источник
comment
Я полагаю, вы используете графическую библиотеку TurboC на каком компиляторе? MSVC, G++, Clang? Однако это не рекомендуется. Вы можете вручную сделать ссылки на библиотеки (gdi32, bgi и т.д.).   -  person Keyu Gan    schedule 30.06.2016
comment
Я не думаю, что вы можете использовать это старое дерьмо на чем-либо, кроме старых компиляторов Borland DOS. Вам нужен доступ к заголовку и библиотеке BGI.   -  person Lundin    schedule 01.07.2016


Ответы (2)


Это связано с тем, что вы используете старое 16-разрядное приложение MS-DOS, скорее всего, на Win7 или более новой ОС, что не очень хорошая идея (и на x64 бит больше не будет работать). Даже если вы используете 32-битный компилятор, Borland BGI будет 16-битным. Другая возможность проблемы - это неправильный gfx BGI-драйвер, который я нигде не инициализировал (мне не хватает использования initgraph, но более новый действительно использовал BGI, поэтому я могу ошибаться ). Так что делать:

  1. проверьте свой код на каком-нибудь рабочем примере, их много здесь, на SO
  2. проверьте местоположение драйвера BGI (старая MS-DOS поддерживает paths+filename только до 66 символов !!!)
  3. попробуйте запустить приложение в режиме совместимости (MS-DOS или W9x или XP)
  4. заменить старый 16-битный Borland BGI на эмулятор WinBGI
  5. запустите приложение в DOSBox или любом эмуляторе MS-DOS
person Spektre    schedule 01.07.2016

Вы не запустили графический движок с помощью InitGraph().

http://www.programmingsimplified.com/c-graphics-programming-tutorial

Точно так же, как OpenGL, Direct3D, SDL и т. д. имеют функцию инициализации, BGI имеет функцию InitGraph(), которую вы должны использовать даже для рисования простой точки!

person Community    schedule 01.07.2016