注册 登录
编程论坛 C图形专区

[求助] C 语言图形系统不能初始化的问题

aiwu_net 发布于 2006-11-01 17:12, 1247 次点击

下面的程序是我处理用的,但是一直运行有错误,总是提示:BGI Error: Graphics not initialized (use 'initgraph') ,我看了好多帖子都没有什么用!! 希望大家能够帮助 十分的紧急!! 谢谢了!
下面的方法是我从网上找来的,我也用了但是还是不行,首先是前面2步的运行就存在问题,我不知道是我理解错了还是方法本身有问题;再者就是在程序中使用函数 registerbgidriver(EGAVGA_driver) 的时候总是提示:Udefined symbol EGAVGA_driver !!! 我不明白是什么原因 请各位大哥救命呀!!

( 为了使用方便,应该建立一个不需要驱动程序就能独立运行的可执行图形程序,Turbo C中规定用下述步骤(这里以 EGA、VGA显示器为例):
I. 在C:\TC子目录下输入命令:BGIOBJ EGAVGA
此命令将驱动程序EGAVGA.BGI转换成EGAVGA.OBJ的目标文件。
II. 在C:\TC子目录下输入命令:TLIB LIB\GRAPHICS.LIB+EGAVGA
此命令的意思是将EGAVGA.OBJ的目标模块装到GRAPHICS.LIB库文件中。
III. 在程序中initgraph()函数调用之前加上一句: registerbgidriver(EGAVGA_driver):
该函数告诉连接程序在连接时把EGAVGA的驱动程序装入到用户的执行程序中。
经过上面处理,编译链接后的执行程序可在任何目录或其它兼容机上运行。)


#include <graphics.h> //此头文件是图形头文件;
#include <stdio.h> //此文件是数学函数头文件;
#include <time.h> //此文件是时间头文件;
#include <conio.h>
#include <dos.h>
#include <stdlib.h>

void main()
{
int i;
int gdriver=DETECT,gmode=;

system("cls");

detectgraph(&gdriver,&gmode);
printf("The GraphDriver is %d,GraphMode is %d\n",gdriver,gmode);

initgraph(&gdriver, &gmode, "C:\\TC\\BGI"); //初始化图形系统,

for(i=0;i<=100;i++)
{

setcolor(i); //设置当前画线颜色;
setlinestyle(0,0,1); //设置当前画线宽度和类型
setfillstyle(1,3); //设置填充模式和颜色;
circle(300, 240, 100-i); //以给定的半径以(x, y)为圆心画圆;
floodfill(300, 240,i); //填充一个有界的区域;
delay(9e245); //将程序的执行暂停一段时间(毫秒)
}

getch(); //从控制台无回显地取一个字符
closegraph(); //关闭图形系统;


}

[此贴子已经被unicorn于2006-11-1 18:25:16编辑过]

2 回复
#2
一笔苍穹2006-11-02 10:14
第十一行的“gmode=;”有问题,没给初始值。
方法没错,可能是你操作失误吧,建议你使用WIN-TC:
“WIN-TC提供了模板的功能,其中的一个就是“BGI图形编程模板”。使用该模板生成的EXE,如果是用ega或vga模式的话,连.bgi文件都可以不需要来直接运行你的EXE啦” ----《WIN-TC帮助文档》
#3
aiwu_net2006-11-02 17:14
哈哈 谢谢了!!是这个语句错了:int gdriver=DETECT,gmode=; 定义这个变量:gomode 的时候是不应该给赋值的!!
下面这样定义就好了:
int gdriver=DETECT,gmode;
1