graphics.h в 2026 году: зачем и как запустить

graphics.h — это часть библиотеки BGI (Borland Graphics Interface) родом из 1990-х. В современных IDE её нет: она несовместима с 64-битными системами и не является частью стандарта C++. Тем не менее в учебных задачах она до сих пор встречается — особенно там, где нужно быстро визуализировать алгоритм или сдать лабораторную.
Когда это оправдано
изучение основ C/C++ и хочется видеть результат за пределами консоли
разбор алгоритмов компьютерной графики
подготовка к экзамену по предмету, где преподаватель требует именно
graphics.h
Для production-кода и серьёзных учебных проектов лучше сразу смотреть в сторону актуальных библиотек: SDL2 (2D, кроссплатформенная), SFML (ООП-подход, проще в освоении) или OpenGL/GLFW (если нужна 3D-графика и аппаратное ускорение).
О библиотеке
Адаптация для современных Windows называется WinBGIm — её разработал и поддерживает Майкл Мэйн, профессор Колорадского университета в Боулдере. Библиотека открыта для использования и модификации. Скачать можно на официальном сайте: winbgim.codecutter.org.
Если хочется сначала почитать вводный разбор — на Хабре есть статья с обзором WinBGIm, здесь же показан небольшой практический пример-скриншот: инженерная утилита с графическим выводом, которая впоследствии была переписана с использованием современного UI на C++.
Как запустить: общий принцип
Для работы используется адаптация WinBGIm — три файла: graphics.h, winbgim.h и libbgi.a.
Линкер-флаги одинаковы для всех сред:
-lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32
Известный баг: в оригинальном graphics.h на строке 302 встречается int right=0 — это вызывает ошибку компиляции. Исправляется заменой на int txtright=0.
Dev-C++
Скопировать
graphics.hиwinbgim.hвMinGW64\x86_64-w64-mingw32\includeСкопировать
libbgi.aв...\libTools → Compiler Options → Parameters → Linker— вставить флагиПереключить профиль компилятора на 32-bit Release
Code::Blocks
Файлы — в соответствующие папки
includeиlibкомпилятора MinGWSettings → Compiler → Linker settings → Other linker options— вставить флаги
VS Code
Файлы хранятся внутри проекта. Структура:
project/ include/ ← graphics.h, winbgim.h lib/ ← libbgi.a
В .vscode/tasks.json в массив args добавить:
"-I${workspaceFolder}/include", "-L${workspaceFolder}/lib", "-l"-I${workspaceFolder}/include", "-L${workspaceFolder}/lib", "-lbgi", "-lgdi32", "-lcomdlg32", "-luuid", "-loleaut32", "-lole32" bgi", "-lgdi32", "-lcomdlg32", "-luuid", "-loleaut32", "-lole32"
Компилятор MinGW (g++) должен быть прописан в PATH.
Должно открыться окно с белым кругом на чёрном фоне. Если компиляция падает с ошибкой cannot find -lbgi — проверьте путь до libbgi.a. Ошибка undefined reference обычно означает, что флаги линкера не подхватились.
По материалам видео-инструкции CodeWar
Тест
#include <graphics.h> #include <conio.h> int main() { int gd = DETECT, gm; initgraph(&gd, &gm, (char*)""); circle(250, 250, 100); getch(); closegraph(); return 0; }
Должно открыться окно с белым кругом на чёрном фоне. Если компиляция падает с ошибкой cannot find -lbgi — проверьте путь до libbgi.a. Ошибка undefined reference обычно означает, что флаги линкера не подхватились.
