Я хочу начать писать код, используя функции из библиотеки graphics.h в Code :: Blocks. После загрузки, перемещения и компоновки всего я все еще получаю сообщение об ошибке: «Процесс вернул -1073741819 (0xC0000005)» всякий раз, когда я пытаюсь запустить любую программу, которая вызывает библиотеку graphics.h.
#include<graphics.h>
int main()
{
int gd = DETECT;
int gm;
initgraph(&gd, &gm, "C:\\TC\\BGI");
arc(200,200,0,130,50);
getch();
closegraph();
return 0;
}
Это просто пример того, что вернет эту ошибку. Если я оставлю все функции, он вернет 0.
Если вам не требуется использовать winBGI, могу ли я порекомендовать графические движки в SDL или SFML? Узнавать что-то актуальное будет гораздо полезнее в будущем.
Изучите кое-что, что будет полезно в этом поколении, например, графические движки, упомянутые в предыдущих комментариях. Изучение winBGI - это тупик.
0xC0000005 - это обычный код возврата Windows для ошибки сегментации. (Ошибка сегмента происходит, если вы обращаетесь к недопустимому адресу, например, к указателю NULL / nullptr на процессорах x86.) Я подозреваю, что initgraph() завершился неудачно, поэтому любая последующая графическая команда имеет неопределенное поведение. Однако я согласен с Полом: BGI чертовски старый. Я уже использовал его более 20 лет назад, когда сам был студентом. ;-)





Code :: Blocks - это инструмент, который находится поверх компилятора, обычно компилятора на основе gcc. Пожалуйста, добавьте в свой вопрос версию этого компилятора
g++ -vв командной строке, чтобы получить эту информацию для вас. Это важно, потому что graphics.h - пережиток 1980-х годов. Примерно в 2005 году он был адаптирован к современным аппаратным операциям на базе Windows. Что ж, с тех пор прошло более 10 лет, а время и инструменты ушли. Если у вас установлен современный Code :: Blocks с современным компилятором C++, очень высока вероятность того, что он несовместим с используемой вами библиотекой winBGI.