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

时间:2021-12-28 18:38:20
我编写的含图形函数头文件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;
万分感谢!!!!

37 个解决方案

#1


sf

#2


你用别人编的exe在你的机器上运行可以吗

#3


顶!!! 我也有这样的问题,急待解!!!!!

#4


这个也叫  一个超难解决的问题 ??

#5


不是你的显卡驱动有问题
就是你的电脑里有病毒了
你以为病毒这么容易清除

我的电脑中了毒,
装了瑞星但是瑞星不能运行
点瑞星的快捷图标
出现一个提示
找不到瑞星的进程路径
装了麦咖啡能运行
但是杀不掉它
重装了还有残余存在
瑞星还是不能运行

这是一个内核Rootkit病毒。
我拿它毫无办法
只好不在C盘上工作
跑到D盘的操作系统上工作

#6


我顶,顶顶!!!
我也是一样
搞了好久都没弄好

#7


hehe  你装个纯dos看看, TC是16位DOS系统下工作的程序

#8


能看看两台机器之间有什么区别吗?

#9


我机子的配置是:
CPU:奔D 3.0 双核
主板:精英 945P-A
内存:金邦1G
显卡:讯景7300GT Y73E-NAQ
显示器:PHILIPS 19寸宽屏

CPU:奔D 3.0 双核
主板:精英 945P-A
内存:金泰克1G
显卡:小影霸
显示器:明基 17寸标屏

#10


下面的那个配置是可以正常使用的

#11


为什么偏要用TC呢???可以用VC 啊!!!

#12


TC库为16位机子设计很多设计会存在一些不合理尤其是那些运用到设备的很底层的(可以说接近底层的)东西时候往往会产生问题,而且GRAPHICS.H已经被几乎大多的编译器抛弃,使用如此老版本的库运行在新一代的WINDOWS下(据说WIN2K开始对这个库支持就差了,问题很多)问题当然很多~

#13


graphics.h并没有被大多数编译器抛弃
因为borland之外的编译器 就从来都没支持过它 何来抛弃之有?

#14


TC有几种显示模式
你用的是哪种

#15


显卡不同
可能导致显示模式不同

#16


一般用的VGA;
其他的几种也试过,
也用过DETECT都不行.

#17


还有人写dos下的图形程序?I faint,要写也用djgpp写啊,

#18


真的没办法,要做课设;

最后我发现在纯DOS下面还可以用。只能这么做了!

#19





你看看这个

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

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

#20


这些都试过,都搞不了。

#21



换个tc看看

http://www.skycn.com/soft/18925.html

#22


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代替即可。

#23


要不我再试试,这两天寝室电用完了,要到星期一交电费,才会有电

#24


#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


#25


我也有同样的问题(我的配置是:amd 4400+,1G ddr2 667,7300GT,250G SATA3,PHILIPS 19寸宽屏),怀疑是宽屏显示器的问题,毕竟turboc时代没有宽屏(应该吧?!)。现在的情况下驱动可能有问题。

#26


我刚才试了,也是到纯dos下才解决问题。难道是PHILIPS显示器的问题?
   我用vmware再来试试!我可不想整天在dos底下混啊!!!

#27


http://www.45it.com/Article/pcedu/Window/windowszh/200706/16261.htm或许有用

#28


我用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中编译,调试吧。

#29


用vmware

#30


不用TC,用VC不也可以吗???

#31


我晕~~~~~
指令系统不对把哈

#32


vc下没有graphics.h吧?

#33


vmware好像还是有问题,一是数字显示有问题,二是用fwrite等函数读写时似乎也会有问题。还有哪位高手有好办法啊?
   另外,我换成了15寸显示器后还是有问题。看来应该是显卡出了不兼容问题。

#34


你和你朋友换下机器不就行了。。
程序调不出来和显示器有关?

#35


偶不会

#36


用vc调试是不可以的,因为VC没有graphics.h文件!

#37


egavga.bgi被删除了,拷贝一个过来

#1


sf

#2


你用别人编的exe在你的机器上运行可以吗

#3


顶!!! 我也有这样的问题,急待解!!!!!

#4


这个也叫  一个超难解决的问题 ??

#5


不是你的显卡驱动有问题
就是你的电脑里有病毒了
你以为病毒这么容易清除

我的电脑中了毒,
装了瑞星但是瑞星不能运行
点瑞星的快捷图标
出现一个提示
找不到瑞星的进程路径
装了麦咖啡能运行
但是杀不掉它
重装了还有残余存在
瑞星还是不能运行

这是一个内核Rootkit病毒。
我拿它毫无办法
只好不在C盘上工作
跑到D盘的操作系统上工作

#6


我顶,顶顶!!!
我也是一样
搞了好久都没弄好

#7


hehe  你装个纯dos看看, TC是16位DOS系统下工作的程序

#8


能看看两台机器之间有什么区别吗?

#9


我机子的配置是:
CPU:奔D 3.0 双核
主板:精英 945P-A
内存:金邦1G
显卡:讯景7300GT Y73E-NAQ
显示器:PHILIPS 19寸宽屏

CPU:奔D 3.0 双核
主板:精英 945P-A
内存:金泰克1G
显卡:小影霸
显示器:明基 17寸标屏

#10


下面的那个配置是可以正常使用的

#11


为什么偏要用TC呢???可以用VC 啊!!!

#12


TC库为16位机子设计很多设计会存在一些不合理尤其是那些运用到设备的很底层的(可以说接近底层的)东西时候往往会产生问题,而且GRAPHICS.H已经被几乎大多的编译器抛弃,使用如此老版本的库运行在新一代的WINDOWS下(据说WIN2K开始对这个库支持就差了,问题很多)问题当然很多~

#13


graphics.h并没有被大多数编译器抛弃
因为borland之外的编译器 就从来都没支持过它 何来抛弃之有?

#14


TC有几种显示模式
你用的是哪种

#15


显卡不同
可能导致显示模式不同

#16


一般用的VGA;
其他的几种也试过,
也用过DETECT都不行.

#17


还有人写dos下的图形程序?I faint,要写也用djgpp写啊,

#18


真的没办法,要做课设;

最后我发现在纯DOS下面还可以用。只能这么做了!

#19





你看看这个

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

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

#20


这些都试过,都搞不了。

#21



换个tc看看

http://www.skycn.com/soft/18925.html

#22


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代替即可。

#23


要不我再试试,这两天寝室电用完了,要到星期一交电费,才会有电

#24


#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


#25


我也有同样的问题(我的配置是:amd 4400+,1G ddr2 667,7300GT,250G SATA3,PHILIPS 19寸宽屏),怀疑是宽屏显示器的问题,毕竟turboc时代没有宽屏(应该吧?!)。现在的情况下驱动可能有问题。

#26


我刚才试了,也是到纯dos下才解决问题。难道是PHILIPS显示器的问题?
   我用vmware再来试试!我可不想整天在dos底下混啊!!!

#27


http://www.45it.com/Article/pcedu/Window/windowszh/200706/16261.htm或许有用

#28


我用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中编译,调试吧。

#29


用vmware

#30


不用TC,用VC不也可以吗???

#31


我晕~~~~~
指令系统不对把哈

#32


vc下没有graphics.h吧?

#33


vmware好像还是有问题,一是数字显示有问题,二是用fwrite等函数读写时似乎也会有问题。还有哪位高手有好办法啊?
   另外,我换成了15寸显示器后还是有问题。看来应该是显卡出了不兼容问题。

#34


你和你朋友换下机器不就行了。。
程序调不出来和显示器有关?

#35


偶不会

#36


用vc调试是不可以的,因为VC没有graphics.h文件!

#37


egavga.bgi被删除了,拷贝一个过来