You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Code::Blocks运行C++图形程序报错Process terminated with status -1073741819

解决Code::Blocks中WinBGIm图形程序运行错误(状态码-1073741819)

错误现象

在Code::Blocks中运行基于WinBGIm的C++图形程序时,编译过程无错误,但运行时直接终止,提示:
Process terminated with status -1073741819 (0分钟,16秒)

编译运行日志

-------------- Build: Debug in GraphicsTest (compiler: tdm64-gcc 64-bit Compiler)---------------

mingw32-g++.exe -Wall -fexceptions -g -std=gnu++98 -m32 -Og -IC:\TDM-GCC-32\lib\graphics -IC:\TDM-GCC-32\lib\winbgim -IC:\TDM-GCC-32\include\winbgim -IC:\TDM-GCC-32\include\graphics -c "C:\Users\Jones Mwakisha\Documents\Programming\Cpp\GraphicsTest\main.cpp" -o obj\Debug\main.o
mingw32-g++.exe -LC:\TDM-GCC-64\lib -LC:\TDM-GCC-32\include -o bin\Debug\GraphicsTest.exe obj\Debug\main.o  -lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32 -static-libstdc++ -static-libgcc -static -m32 -lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32  C:\TDM-GCC-32\lib\libbgi.a C:\TDM-GCC-32\include\graphics.h C:\TDM-GCC-32\include\winbgim.h
Output file is bin\Debug\GraphicsTest.exe with size 1.72 MB


Process terminated with status 0 (0 minute(s), 11 second(s))
0 error(s), 0 warning(s) (0 minute(s), 11 second(s))
 

-------------- Run: Debug in GraphicsTest (compiler: tdm64-gcc 64-bit Compiler)---------------

Checking for existence: C:\Users\Jones Mwakisha\Documents\Programming\Cpp\GraphicsTest\bin\Debug\GraphicsTest.exe
Set variable: PATH=.;C:\TDM-GCC-64\lib;C:\TDM-GCC-32\bin;C:\TDM-GCC-32;C:\TDM-GCC-64\bin
Executing: "C:\CodeBlocks/cb_console_runner.exe" "C:\Users\Jones Mwakisha\Documents\Programming\Cpp\GraphicsTest\bin\Debug\GraphicsTest.exe"  (in C:\Users\Jones Mwakisha\Documents\Programming\Cpp\GraphicsTest\.)
Process terminated with status -1073741819 (0 minute(s), 16 second(s))

程序代码

#include <graphics.h>
int main()
{
    int gd=DETECT,gm;
    initgraph(&gd,&gm, (char*)"");
    circle(160,120, 100);
    getch();
    closegraph();
    return 0;
}

问题分析与解决方案

状态码-1073741819对应Windows系统错误码0xC0000005,属于内存访问违例,结合WinBGIm库的使用场景,主要由以下问题导致,对应解决方案如下:

1. 修正编译链接的路径与参数错误

从日志可见,编译时混合了32位和64位TDM-GCC路径,且错误地将头文件作为链接文件传入,这会导致程序运行时内存错误:

  • 在Code::Blocks的编译器设置中,切换为纯32位TDM-GCC(WinBGIm通常仅支持32位环境)
  • 修改链接参数,移除末尾的C:\TDM-GCC-32\include\graphics.h C:\TDM-GCC-32\include\winbgim.h(头文件不需要参与链接)
  • 调整库链接顺序,将libbgi.a放在链接参数的最前面,确保符号解析正确

2. 修正initgraph函数参数

代码中(char*)""的强制转换可能引发问题,WinBGIm在Windows下无需指定驱动路径,可直接修改为:

initgraph(&gd, &gm, "");

若自动检测驱动失败,可显式指定驱动类型:

int gd = VGA, gm = VGAHI;
initgraph(&gd, &gm, "");

3. 替换非标准的getch()函数

getch()是非标准C++函数,部分环境下会导致兼容性问题,可替换为:

  • 包含<conio.h>后使用_getch()
  • 或包含<iostream>后使用cin.get()

4. 验证库文件完整性

确认libbgi.a、graphics.h、winbgim.h等文件正确放置在32位TDM-GCC的对应目录下,文件未损坏。

内容的提问来源于stack exchange,提问作者Jones Mwakisha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 15:45:48