如何让用c语言编写的程序在windows和dos下都能运行啊??

时间:2022-04-01 09:17:57
我见过不少能够同时在windows和dos 下都能运行的程序,最明显的就是一些README.EXE了,为什么我自己编写的程序就不行呢?也就是说,如何让程序在16位环境下和32位环境下都能运行呢??这里面有什么奥妙呢???
请教

8 个解决方案

#1


编写16位代码即可

#2


没什么奥妙
一个程序跟一个人一样
只要老老实实安份守己
在任何地方都不容易被抓

#3


在windows,dos下都可以运行的程序?
16位和32位都可以运行?

很简单,你只需要编写一个最低版本的程序就可以了。

最好的例子,汇编程序不管dos,windows,还是什么别的东西都可以运行。


这就是奥妙。^_^

#4


16 位就要以通用了。

兄弟,给点分吧。我实在在没有分了。

#5


还是有点不太懂的。
例如下面这个程序是我的设计,在\tc目录下能够运行的,并且也可以在windows下运行。但是脱离\tc 目录,即离开tc环境就不行了,这是怎么回事呢?还有,要运行这个程序,必须解压bgi。arc文件。这个文件包含pc3271.bgi,att.bgi,cga.bgi,egavga.bgi,litt.chr,sans.chr等程序,请问这些后缀为*。bgi和*。chr的程序是什么啊,有什么用啊??
年幼无知,请教了

# include <graphics.h>
# include <stdlib.h>
# include <stdio.h>
# include <math.h>
main()
{
int graphdrv=VGA;
int graphmode=VGAHI;
int a=150,t=0,x=200,u=20,n=1000,y,r=4,i;
float w=0.05,f=0.8;
initgraph(&graphdrv,&graphmode,"\\tc\\bgi");
for(t=0;t<=n;t++)
{for(i=0;i<=100;i++)
line(x,u,x,100);
y=a*cos(w*t+f)+250;
cleardevice();
line(x-50,u,x+50,u);
for(i=0;i<=4;i++)
{
line(x+10*i,u,x+10*+i+10,u-10);
line(x-10*i-10,u,x-10*i,u-10);
}
line(x,u,x,y);
line(x+1,u,x+1,y);
line(x-1,u,x-1,y);
circle(x,y,r-1);
circle(x,y,r-2);
circle(x,y,r);
}
while(! kbhit());
closegraph();
}

#6


那是因为
连接时,没有把BGI中的支持文件连接进去

你把你的应用程序和相应的pc3271.bgi,att.bgi,cga.bgi,egavga.bgi,litt.chr,sans.chr等放在同一个目录中

initgraph(&graphdrv,&graphmode,"\\tc\\bgi");
改为
initgraph(&graphdrv,&graphmode,"");
就行了

或者
是用BGIOBJ.EXE(在tc的BGI目录里)把要用的.BGI文件变成.OBJ再和你的程序连接在一起也行

#7


initgraph(&graphdrv,&graphmode,"");
在那都(除了linux,unix...哈哈)可以运行的,只要变成了*.exe

#8


cngdzhang()   说的是完全正确的   
      我把完整过程写下:
     (1) 在C语言编译器目录(就是TC根目录,要求bgiobj.exe 和bgi文件都在这个目录)下输入命令:
            BGIOBJ  EGAVGA   /*BGIOBJ 命令将驱动程序EGAVGA.OBJ 转换成 EGAVGA。OBJ文件*/
       (2)在C语言编译器目录下输入命令:
           TLIB  LIB\GRAPHICS.LIB+EGAVGA  /*TLIB命令的意思是将EGAVGA。OBJ模块装入GRAPHICS。LIB的目标文件。*/
       (3)  在程序中initgraph() 函数调用前加上:
               registerbgidriver(EGAVGA_diver);

#1


编写16位代码即可

#2


没什么奥妙
一个程序跟一个人一样
只要老老实实安份守己
在任何地方都不容易被抓

#3


在windows,dos下都可以运行的程序?
16位和32位都可以运行?

很简单,你只需要编写一个最低版本的程序就可以了。

最好的例子,汇编程序不管dos,windows,还是什么别的东西都可以运行。


这就是奥妙。^_^

#4


16 位就要以通用了。

兄弟,给点分吧。我实在在没有分了。

#5


还是有点不太懂的。
例如下面这个程序是我的设计,在\tc目录下能够运行的,并且也可以在windows下运行。但是脱离\tc 目录,即离开tc环境就不行了,这是怎么回事呢?还有,要运行这个程序,必须解压bgi。arc文件。这个文件包含pc3271.bgi,att.bgi,cga.bgi,egavga.bgi,litt.chr,sans.chr等程序,请问这些后缀为*。bgi和*。chr的程序是什么啊,有什么用啊??
年幼无知,请教了

# include <graphics.h>
# include <stdlib.h>
# include <stdio.h>
# include <math.h>
main()
{
int graphdrv=VGA;
int graphmode=VGAHI;
int a=150,t=0,x=200,u=20,n=1000,y,r=4,i;
float w=0.05,f=0.8;
initgraph(&graphdrv,&graphmode,"\\tc\\bgi");
for(t=0;t<=n;t++)
{for(i=0;i<=100;i++)
line(x,u,x,100);
y=a*cos(w*t+f)+250;
cleardevice();
line(x-50,u,x+50,u);
for(i=0;i<=4;i++)
{
line(x+10*i,u,x+10*+i+10,u-10);
line(x-10*i-10,u,x-10*i,u-10);
}
line(x,u,x,y);
line(x+1,u,x+1,y);
line(x-1,u,x-1,y);
circle(x,y,r-1);
circle(x,y,r-2);
circle(x,y,r);
}
while(! kbhit());
closegraph();
}

#6


那是因为
连接时,没有把BGI中的支持文件连接进去

你把你的应用程序和相应的pc3271.bgi,att.bgi,cga.bgi,egavga.bgi,litt.chr,sans.chr等放在同一个目录中

initgraph(&graphdrv,&graphmode,"\\tc\\bgi");
改为
initgraph(&graphdrv,&graphmode,"");
就行了

或者
是用BGIOBJ.EXE(在tc的BGI目录里)把要用的.BGI文件变成.OBJ再和你的程序连接在一起也行

#7


initgraph(&graphdrv,&graphmode,"");
在那都(除了linux,unix...哈哈)可以运行的,只要变成了*.exe

#8


cngdzhang()   说的是完全正确的   
      我把完整过程写下:
     (1) 在C语言编译器目录(就是TC根目录,要求bgiobj.exe 和bgi文件都在这个目录)下输入命令:
            BGIOBJ  EGAVGA   /*BGIOBJ 命令将驱动程序EGAVGA.OBJ 转换成 EGAVGA。OBJ文件*/
       (2)在C语言编译器目录下输入命令:
           TLIB  LIB\GRAPHICS.LIB+EGAVGA  /*TLIB命令的意思是将EGAVGA。OBJ模块装入GRAPHICS。LIB的目标文件。*/
       (3)  在程序中initgraph() 函数调用前加上:
               registerbgidriver(EGAVGA_diver);