Turbo C 3.2与Code::Blocks中图形代码报错问题求解决方案
解决Turbo C 3.2的Divide Error和Code::Blocks的未定义引用问题
我来帮你拆解两个环境里的问题,逐个给出解决方案:
一、Turbo C 3.2中的Divide Error(除零错误)
你代码里的initgraph(&a,&ab,"C:\\TURBOC3\\BGI");参数设置有问题:
- 第一个参数
&a是图形模式的指针,你手动赋值的a=10是无效的图形模式值,Turbo C的图形模式需要用预定义常量(比如DETECT让系统自动检测合适的模式,或者VGA、VGAHI这类具体模式)。 - 正确的写法应该先定义图形驱动和模式变量,再调用
initgraph:
#include<graphics.h> int main() { int gd = DETECT, gm; // DETECT让系统自动匹配最优图形模式 initgraph(&gd, &gm, "C:\\TURBOC3\\BGI"); // 确保BGI文件路径正确 circle(100,200,20); getch(); // 加这句让图形窗口停留,不然画完会直接关闭看不到效果 closegraph(); return 0; }
修改后Turbo C就能正确初始化图形环境,不会触发除零错误了。
二、Code::Blocks中initgraph()和closegraph()未定义引用
graphics.h是Turbo C专属的16位BGI图形库,Code::Blocks用的GCC编译器是32/64位环境,原生不兼容BGI——哪怕你把头文件和库放进去也没用,因为格式不匹配。这里给你两个可行的替代方案:
方案1:使用WinBGIm库(适配GCC的BGI兼容库)
- 准备WinBGIm的文件:包含
graphics.h、winbgim.h和libbgi.a。 - 把
graphics.h和winbgim.h复制到Code::Blocks的编译器头文件目录(比如CodeBlocks\MinGW\include)。 - 把
libbgi.a复制到编译器的库文件目录(比如CodeBlocks\MinGW\lib)。 - 打开Code::Blocks,进入Settings > Compiler > Linker settings,在Other linker options里添加:
-lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32 - 调整代码适配WinBGIm:它的
initgraph不需要BGI路径参数,直接指定窗口大小即可:#include<graphics.h> int main() { initgraph(640, 480); // 创建640x480的图形窗口 circle(100,200,20); getch(); closegraph(); return 0; }
方案2:使用EasyX图形库(更简单的现代图形库)
EasyX是专为C/C++设计的轻量图形库,适配GCC和VS,配置更简单:
- 下载EasyX图形库并安装(安装时选择适配Code::Blocks的版本)。
- 直接修改代码即可,不需要额外配置链接参数:
#include<graphics.h> int main() { initgraph(640, 480); // 初始化图形窗口 circle(100, 200, 20); getch(); closegraph(); return 0; }
内容的提问来源于stack exchange,提问作者KD.
相关产品推荐
相关产品推荐

