BGI Error:Graphics not initialized (use 'initgraph')真正详解

来源:互联网 发布:python input split 编辑:程序博客网 时间:2024/06/05 05:36

 网络上到处都是解决的方法,但是对我我们这一代从未接触过DOS的新青年,或许会很茫然,就像我。按照书上介绍一共就3步即可解决问题,但是真正让我搞不明白的就是前2步,经过一系列的瞎折腾终于搞明白了。详细解决方法如下

       按照书上说的步骤一共有下面3步

     1. 在C:\TC子目录下输入命令:BGIOBJ EGAVGA 
      此命令将驱动程序EGAVGA.BGI转换成EGAVGA.OBJ的目标文件。 
      2. 在C:\TC子目录下输入命令:TLIB LIB\GRAPHICS.LIB+EGAVGA 
      此命令的意思是将EGAVGA.OBJ的目标模块装到GRAPHICS.LIB库文件中。 
      3. 在程序中initgraph()函数调用之前加上一句: 
         registerbgidriver(EGAVGA_driver);

现在解释第一步1. 在C:\TC子目录下输入命令:BGIOBJ EGAVGA

        我先介绍一下我的TC位置,位于E:\TC20H这里是我的TC2.0所在的位置,而在上面1,2步中要用到的文件分别位于E:\TC20H\BGI\EGAVGA.BGI和E:\TC20H\LIB\GRAPHICS.LIB

如果以上一些准备就需就按照我的步骤开始进行

首先开始->运行->cmd->e:(我的TC所在的硬盘位置,根据自身情况修改)->CD TC20H(CD是打开文件夹的意思,TC20H是我的TC2.0的文件夹名称)->cd BGI

1. 在E:\TC20H\BGI子目录 下输入命令:BGIOBJ EGAVGA

在运行上面命令之前一定要确认EGAVGA.BGI就在E:\TC20H\BGI文件夹中(根据自身情况确认,以后不做提示)运行完上面第一步之后会发现在此文件夹中多出一个EGAVGA.OBJ文件,将此文件放到E:\TC20H文件夹下,以便后面操作

2. 在E:\TC20H子目录下输入命令:TLIB LIB\GRAPHICS.LIB+EGAVGA 
再输入以上命令之前一定要确保在E:\TC20H有EGAVGA.OBJ文件,就是第一步操作生成的文件,然后根据自身情况修改LIB\GRAPHICS.LIB路径位置,注意现在的输入命令为止一定要在E:\TC20H中,要退出E:\TC20H\BGI这个文件夹LIB\GRAPHICS.LIB其实就是E:\TC20H\LIB\GRAPHICS.LIB此文件的位置由于现在为止已经在E:\TC20H中所以只需输入LIB\GRAPHICS.LIB就成然后再运行

3. 在程序中initgraph()函数调用之前加上一句: 
         registerbgidriver(EGAVGA_driver); 

用程序来解释吧

#include<stdio.h>
#include<graphics.h>
main()
{
int gdriver=DETECT,gmode;
registerbgidriver(EGAVGA_driver);
initgraph(&gdriver,&gmode,"e:\\TC20H\\BGI");
bar3d(50,50,250,150,20,1);

getch();
}

大家试验一下看看书出了个什么图形,如果成功请留言!~

另外还有一个位置需要注意一下,经过实验发现当把生成的EGAVGA.OBJ文件放到根目录时,需要重新运行CMD不然会提示

'TLIB' is not recognized as an internal or external command operable program or bath file 

反应异常的人很多 我有试验了一下第2步 下面2张截图就是我的实验过程,第2张石按回车时候的图样


我实在不明白各位是为什么错误???我的就可以呢我想来想去 只可能是这一句话出现问题了

TLIB LIB\GRAPHICS.LIB+EGAVGA 
TLIB 这个是必须加的 后面的LIB\GRAPHICS.LIB+EGAVGA 的意思是这样的 ‘+’前后其实就是2个文件所在的地址 由于此时的位置已经在E:\TC20H所以这2个文件之前不用再加E:\TC20H,LIB\GRAPHICS.LIB其实就是位于E:\TC20H\LIB\GRAPHICS.LIB下的文件或许大家是LIB的地方错了这只是猜测,只要保证GRAPHICS.LIB位置正确即可,不用关心是不是在LIB下 如果在AA下那就换成E:\TC20H\AA\GRAPHICS.LIB

我之所以让大家把EGAVGA .OBJ是为了方便操作这样‘+’后面直接输入EGAVGA 即可,就不用输入目录文件了,同样的道理,如果EGAVGA 在别的目录下面也要输入目录名