2016-06-30 10 views
0

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

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

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

Я считаю, что вы используете графическую библиотеку TurboC на том, что complier? MSVC, G ++, Clang? Однако это не предлагается. Вы можете вручную делать ссылки на библиотеки (gdi32, bgi и т. Д.). –

+0

Я не думаю, что вы можете использовать эту старую дерьмо ни на чем, кроме старых компиляторов Borland DOS. Вам нужен доступ к заголовку и библиотеке BGI. – Lundin

ответ

1

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

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

Вы не инициировали графический движок, используя InitGraph()

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

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