先确保Options—Linker—Graphics library选项为on.
在initgraph()调用之前我们调用 registerbgidriver(EGAVGA_driver);这样就自动加载了驱动程序。有一点要注意:在使用这个功能之前,必须确保EGAVGA.BGI已经加载在graphics.lib之中。(如果前面的问题已经解决就说明已经加载了)如果没有加载,如要按照以下的方法进行加载。
1在TC下找到BGIOBJ.exe这个程序,并找到EGAVGA.BGI这个文件,把EGAVGA.BGI这个文件复制到与BGIOBJ.exe同一目录下,
2 执行:BGIOBJ EGAVGA(把bgi转换成obj)
3再执行:TLIB LIB\GRAPHICS.LIB+EGAVGA(加载到lib中)
即可。
(PS:对2、3步骤进行说明,这些都是DOS命令,在windows下,可以按Win+R打开运行窗口,输入cmd,确定就出现一个虚拟DOS黑窗口,然后手工输入命令CD /D C:\TC再输入第1条BGIOBJ EGAVGA即可。第2条也是一样的。
因为TC是1988年的东西,(没办法太经典了所以流传了20年!!!),那个时候个人电脑是DOS操作系统占据天下的,单任务,全英文,黑窗口输入命令来执行操作的。)
图解:
网络上到处都是解决的方法,但是对我我们这一代从未接触过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 在别的目录下面也要输入目录名