您的位置:首页 > 编程语言 > C语言/C++

C语言中独立图形程序的建立!!

2007-09-06 21:27 211 查看
Turbo C/C++ 对于用initgraph()函数进行图形初始化,编译和连接时并不将相应的图形驱动程序(*.BGI,现在通常是EGAVGA.BGI)装载入程序。导致的结果就是:当编译连接好的程序在其他目录下运行的时候,系统就会提示找不到显示驱动程序(一般来说提示的窗口会一闪而过,所以基本上什么也看不到)
虽然我们可以搜到很多信息,但大多不详细,让初次接触c图行编程的有点不知所措!
我试着做了一下,所以把步骤写了下拉!!
解决的办法就是把图形驱动装载入程序,步骤如下:
我装的是Turbo C/C++3.0,以下以此为例:
1、 在命令行环境下,打开安装文件TCPP30H/BGI的文件夹,用BGIOBJ.EXE把EGAVGA.BGI编译为EGAVGA.OBJ。
命令为:BGIOBJ EGAVGA.OBJ
再接着输入如下的命令:(这步可以先不做,若所有步骤都做完,程序还不能运行再做也可)
把*.CHR转换成OBJ文件:
C:/Program Files/TCPP30H/BGI/ BGIOBJ EGAVGA(这步上边已经说过了,这可不是让输两次)
...../BGIOBJ TROP.CHR
..../BGIOBJ TRIP.CHR
...../BGIOBJ LITT.CHR
...../BGIOBJ SANS.CHR
...../BGIOBJ GOTH.CHR
经过以上步骤后,有六个OBJ文件生成到BGI文件夹下。
2、 用TLIB.EXE把EGAVGA.OGJ模块装入GRAPHICS.LIB中;
TLIB.EXE在TCPP30H/BIN中,为方便起见,可把TLIB.EXE拷出来,放到和BGI同一个目录下;
命令为:TLIB GRAPHICS.LIB+EGAVGA.OBJ
如下图:(图片无法显示)
具体形式是:
C:/Program Files/TCPP30H>C:/Program Files/TCPP30H>TLIB LIB/GRAPHICS.LIB+BGI/EGAVGA
....>TLIB LIB/GRAPHICS.LIB+BGI/TROP
....
与上一步一样,进行六步操作!

3、 在initgraph()函数前加入registerbgidriver(EGAVGA_driver);函数。
registerbgidriver(EGAVGA_driver);
initgraph(&gdriver,&gmode,"C://Program Files//TCPP30H//BGI");

这样图形驱动就可以在编译连接时装载入程序,使得程序可以独立于*.BGI的驱动而运行。
附一测试程序:
//test.h可以作为测试,程序运行后会出现一个长方体。
#include<stdio.h>
#include<graphics.h>
int main()
{
int gdriver=DETECT,gmode;
registerbgidriver(EGAVGA_driver);
initgraph(&gdriver,&gmode,"C://Program Files//TCPP30H//BGI");
// 路径是EGAVGA.BGI的路径;
bar3d(150,150,550,150,20,1);
getch();
closegraph();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: