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
相关产品推荐
相关产品推荐

