急!!!一个超难解决的问题,高手们近来看看

isme11 2007-07-28 09:26:30
我编写的含图形函数头文件graphics.h的C语言程序,在别人的电脑上可以正常运行;但在我的电脑上,提示"调试成功",也可以

产生EXE文件,执行后,闪一下就没有了,什么也没有显示.有时会提示:NTVDM CPU遇到无效的指令.
猜测是编译器问题,可是能产生可执行文件,编译器就没问题.
(PS:运行没有含图形函数头文件graphics.h的C语言程序正常,TC没问题)


下面是我用来小测试的一个程序(TC是放在C盘根目录下):
#include "graphics.h"
main()
{
int r,m;

r=DETECT;
initgraph(&r,&m,"c:\\turboc2");
bar(0,0,100,100);
getch();
}

我试过以下方法:
方法1:
疑是TC不完整,就把在别的电脑上能正常使用的TC原封不动的拿来用,把该改的路径都改了.
也装了很多个其他的C编译软件测试(WIN-TC,TurboC,C-free,MYTC等)都一样不行.

方法2:
开始->运行   输入cmd进入dos 环境
然后进入turboc2 子目录
TC装的c在c:\turbovc2 下
输入以下红色命令
c:\~> cd c:\tc
c:\turboc2>cd bgi
c:\turboc2\bgi>bgiobj EGAVGA
c:\turboc2\bgi> copy EGAVGA.OBJ c:\turboc2\bin
c:\turboc2\bgi> cd c:\turboc2\bin
c:\turboc2\bin>tlib c:\turboc2\lib\graphics.lib+EGAVGA
然后再在程序中initgraph()
语句前加入
registerbgidriver(EGAVGA_driver);\
还是不行!

方法3:
以前用的系统是XP,现在装了个2000,还把XP也装过了一个新的,现在装的是双系统.
还是不行!

方法4:
右击TC程序,选择属性,然后选择兼容性后,勾选用兼容模式运行这个程序
还是不行!

方法5:
疑是16位模式程序运行出错造成的提示。由于Windows XP默认情况下不应该存在internet.exe这个文件,电脑可能被病毒 所感染,

可使用最新版本的杀毒软件检查后。
还是不行!

有同样问题的请顶!!!
搞了很久都不行,郁闷死了,彻底无奈.
希望各位给出一个解决的方法,麻烦发给我一下:
我的邮箱:yzyz110@163.com;
万分感谢!!!!
...全文
1376 点赞 收藏 37
写回复
37 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
BSRONG 2007-08-17
egavga.bgi被删除了,拷贝一个过来
回复
VisTB 2007-08-17
vmware好像还是有问题,一是数字显示有问题,二是用fwrite等函数读写时似乎也会有问题。还有哪位高手有好办法啊?
另外,我换成了15寸显示器后还是有问题。看来应该是显卡出了不兼容问题。
回复
liufei1108 2007-08-17
用vc调试是不可以的,因为VC没有graphics.h文件!
回复
ding1012 2007-08-17
偶不会
回复
smile6h 2007-08-17
你和你朋友换下机器不就行了。。
程序调不出来和显示器有关?
回复
cooleditpro 2007-08-15
vc下没有graphics.h吧?
回复
LAOGUANG_NO1 2007-08-14
我晕~~~~~
指令系统不对把哈
回复
琅琊榜 2007-08-14
不用TC,用VC不也可以吗???
回复
fockn 2007-08-14
用vmware
回复
VisTB 2007-08-13
我用vmware试了,终于ok。
具体如下:
1.下载vmware(精简绿色版即可)地址:http://www.onegreen.net/Soft_Down.asp?UrlID=2&SoftID=1004
2.下载maxdos(或其他ms-dos镜像,若磁盘为ntfs注意要下载支持ntfs的)地址:http://download.zol.com.cn/down.php?softid=88016&subcatid=334&site=6
3.装好vmware后,建立一个机器,注意两点:一是增加的硬盘应为物理磁盘,便于访问。二是新增一个软驱,加载下载的ms-dos镜像。
4.初始化图形模式时要明确指出graphdrive与graphmode,否则vmware中分辨率可能出问题。
5.ok了,在windows下编写,vmware中编译,调试吧。
回复
lddLinan 2007-08-13
http://www.45it.com/Article/pcedu/Window/windowszh/200706/16261.htm或许有用
回复
VisTB 2007-08-13
我刚才试了,也是到纯dos下才解决问题。难道是PHILIPS显示器的问题?
我用vmware再来试试!我可不想整天在dos底下混啊!!!
回复
VisTB 2007-08-13
我也有同样的问题(我的配置是:amd 4400+,1G ddr2 667,7300GT,250G SATA3,PHILIPS 19寸宽屏),怀疑是宽屏显示器的问题,毕竟turboc时代没有宽屏(应该吧?!)。现在的情况下驱动可能有问题。
回复
星羽 2007-08-04
#include<stdio.h>
#include<graphics.h>

int main()
{
int gdriver=DETECT,gmode;
registerbgidriver(EGAVGA_driver);
initgraph( gdriver, gmode,"c:\\tc");
bar3d(50,50,250,150,20,1);
getch();
closegraph();
return 0;
}

-------

上面这个是测试程序
我用的是tc3.0,就是发给你连接的那个



步骤

1)

在tc目录下找到 BGIOBJ.EXE (我的在 H:\WINYES\TCPP30E\BGI )

然后运行命令提示符进入这个目录

我的

H:\WINYES\TCPP30E\BGI>

然后

H:\WINYES\TCPP30E\BGI>BGIOBJ EGAVGA

回车运行后,在这个目录下回生成一个 EGAVGA.OBJ


2)

在tc目录下找到 TLIB.EXE (我的在 H:\WINYES\TCPP30E\BIN)

运行命令提示符,进入这个目录

H:\WINYES\TCPP30E\BGI>cd..

H:\WINYES\TCPP30E>cd bin

H:\WINYES\TCPP30E\BIN>

如果把步骤1生成的 EGAVGA.OBJ 也拷贝到这个目录里(和TLIB.EXE同一个目录)


然后运行

TLIB H:\WINYES\TCPP30E\LIB\GRAPHICS.LIB+EGAVGA



H:\WINYES\TCPP30E\LIB\GRAPHICS.LIB 这个是我的graphics.lib的路径,你应该改成你的

然后回车运行,ok


运行上面的测试代码,ok


回复
isme11 2007-08-04
要不我再试试,这两天寝室电用完了,要到星期一交电费,才会有电
回复
星羽 2007-08-04
Turbo C对于用initgraph()函数直接进行的图形初始化程序,
在编译和链接
时并没有将相应的驱动程序(*.BGI)装入到执行程序, 当程序进行到intitgraph()
语句时,
再从该函数中第三个形式参数char *path中所规定的路径中去找相应的
驱动程序。若没有驱动程序, 则在C:\TC中去找,
如C:\TC中仍没有或TC不存在,
将会出现错误:
BGI Error: Graphics
not initialized (use 'initgraph')
因此, 为了使用方便,
应该建立一个不需要驱动程序就能独立运行的可执行
图形程序,Turbo C中规定用下述步骤(这里以EGA、VGA显示器为例):

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):
该函数告诉连接程序在连接时把EGAVGA的驱动程序装入到用户的执行程序中。

经过上面处理,编译链接后的执行程序可在任何目录或其它兼容机上运行。
假设已作了前两个步骤,若再向例6中加
registerbgidriver()函数则变成:
例7:

#include<stdio.h>

#include<graphics.h>

int main()
{

int gdriver=DETECT,gmode;


registerbgidriver(EGAVGA_driver): / *建立独立图形运行程序 */

initgraph( gdriver,
gmode,"c:\\tc");

bar3d(50,50,250,150,20,1);

getch();
closegraph();

return 0;

}
上例编译链接后产生的执行程序可独立运行。

如不初始化成EGA或CGA分辨率, 而想初始化为CGA分辨率, 则只需要将上述

步骤中有EGAVGA的地方用CGA代替即可。
回复
星羽 2007-08-04

换个tc看看

http://www.skycn.com/soft/18925.html
回复
isme11 2007-08-04
这些都试过,都搞不了。
回复
星羽 2007-08-04



你看看这个

http://www.cnblogs.com/lyss/archive/2006/06/28/437433.html

试试里面的例子能正常运行不,还是你的显示模式有问题

回复
isme11 2007-08-04
真的没办法,要做课设;

最后我发现在纯DOS下面还可以用。只能这么做了!
回复
加载更多回复
相关推荐
发帖
C语言
创建于2007-09-28

6.4w+

社区成员

C语言相关问题讨论
申请成为版主
帖子事件
创建了帖子
2007-07-28 09:26
社区公告
暂无公告