问题:
#include<graphics.h>
int main()
{
int gdriver,gmode;
gdriver=VGA;
gmode=VGAHI;
initgraph(&gdriver,&gmode,""); /*错误就在""这,解决方法,解释看下面*/
bar3d(100,100,300,250,50,1);
getch();
closegraph();
return 0;
}
上面的程序能编译出OBJ和EXE文件,但结果和想要的不一样。
上面的程序应该是画一个长方体,但在TC里查看结果时却只有下面的话:
BGI,ERROR:Graphics not initialized (use 'initgraph')
这是哪没设对?
另外在TC下Options/linker中的Graphics lib已经选为ON了。
解决方法:
#include<graphics.h>
int main()
{
int gdriver,gmode;
gdriver=VGA;
gmode=VGAHI;
initgraph(&gdriver,&gmode,"f:\\tc2.0\\bgi");
bar3d(10,10,130,250,20,1);
getch();
closegraph();
return 0;}
BGI,ERROR:Graphics not initialized (use 'initgraph')这句话的意思是:BGI错误,图形不能初始化。
原因是没指定路径,找不见图形驱动程序EGAVGA.BGI文件.
比较:
独立图形运行程序的建立
为了建立一个不需要驱动程序就能运行的可执行图形程序,TURBO C中规定以下步骤进行设置:
1、在盘符\tc\bgi子目录下输入命令:BGUIBH EGAVGA此命令将驱动程序EGAVGA.BGI转换成EGAVGA.OBJ的目标文件.
2 在盘符\TC\BIN子目录下输入命令: TLIB 盘符\TC\LIB\GRAPHICS.LIB+盘符\TC\BGI\EGAVGA
3 在程序中initgraph()函数调用前加上一句:registerbgidriver(EGAVGA_driver); 该函数告诉连接程序在边接时把EGAVGA的驱动装入到用户的执行程序中.
做完了前面的两步,调一下下面的程序看看吧,记着先把TC集成环境中的Options/Linker 中的Graphics lib选为on.
#include<stdio.h>
#include<graphics.h>
int main(){
int gdriver=DETECT,gmode;
registerbgidriver(EGAVGA_driver);
initgraph(&gdriver,&gmode,"");
bar3d(50,50,250,150,20,1);
getch();
closegraph();
return 0;
}
上面这个程序能出来正确结果,是因为registerbgidriver(EGAVGA_driver)函数已经把EGAVGA的驱动程序装入到用户执行程序中了。