如何用vc++6.0编写可以在纯DOS下运行的程序??

时间:2022-09-29 09:16:30
用vc++6.0编写的C程序在纯DOS下运行时提示此程序只能在windows下运行,如何解决?哪里有VC1.5下载?

29 个解决方案

#1


用TC不是更好..

#2


VC1.5 这没用过 
如楼上说的 tc应该很熟悉
教学工具啊

#3


TC2.0中内嵌汇编编译通不过:In-line assembly not allowed in function

#4


如何用vc++6.0编写可以在纯DOS下运行的程序??

#5


/*************** C内嵌汇编示例 ***************/

#include "stdio.h"
#include "conio.h"

int min(int v1, int v2)
{
  asm mov ax,v1;
  asm cmp ax,v2;
  asm jle minexit;
  asm mov ax,v2;
minexit:
  return(_AX);
}

int main(void)
{
  printf("min(10,3) is %d\nmin(34,552) is %d",min(10, 3),min(34, 552));
  getch();
  return 0;
}

/*TC下成功*/

#6


In-line assembly not allowed in function

内部汇编语句不允许。源文件中含有直接插入的汇编语句,若在集成环境下进行编译,则出现此类错误。必须使用TCC命令行编译此源文件。

#7


du51(郁郁思扬) 的程序TC2.0下还是通不过:( 错误提示同上

#8


不会吧....输出结果如下:
/*
min(10,3) is 3
min(34,552) is 34
*/
????
对对....我用的是WIN-TC.

但是,WIN-TC是TC的内核呀.

#9


用VC创建工程的时候,选择console模式

#10


使用TCC编译后生成一个ASM文件,然后呢?

to net_worm(三流):选择console模式它依然是win32程序,不能在纯DOS下运行

du51(郁郁思扬):可能两者的输出还是不一样的吧

#11


当然可以,但你要用标准的c/c++写代码。不要用windows的一些东西。
你也可以用DEV-C++这是从LINUX上移植来的,很好用。

#12


控制台程序啊

#13


控制台程序无法在纯Dos下运行啊。怎么许多人不明白。

#14


搞笑。

VC6.0所产生的可执行文件工作在保护模式下,而DOS是实模式的,两者模式都不一样,VC6.0写的C程序不用想都知道不能在DOS下用的。在DOS下用的EXE,要用实模式的编译器例如tc2.0编写。

#15


VC++、BCB、Delphi都可以用来写纯DOS程序,需要用WDOSX的转换器进行转换。
虽然有一些限制,不过总的来说还是不错的。

#16


PS:DOS也可以运行保护模式程序,带上DPMI扩展器就可以了。
watcom c++、BC++ 4+、Turbo Pascal 6+、DJGPP、Free Pascal等等,都可以生成保护模式的DOS程序。

#17


楼主需要的是能编译出纯DOS的编译器吧 或者确切一点是链接器 TC似乎可以哦 VC没看到这个选项

#18


刚刚google到这个东西 DJGPP.--GCC for DOS
还是GCC强 呵呵 楼主自己研究

#19


PS:DOS也可以运行保护模式程序,带上DPMI扩展器就可以了。
-----------------------------------------------
DOS当然可以运行保护模式程序,DPMI是DOS的保护模式接口规范,但程序需要为DPMI编写专门的代码,VC6.0编译出来的环境并不是为DPMI而写的,它直接使用保护模式,这是不能直接在DOS下用的。

#20


BC31

#21


VC6.0编译出来的要在DOS下用?醒醒吧

#22


不可能

#23


用 TC3.0 或 BC 3.1 都行

#24


要在DOS7.0前的版本运行啊,最好是找老的编译器。
新的编译器不见的支持。

#25


TC2.0应该可以,以前试过的,嵌入汇编没问题的

#26


when you creat a new project.choose the win32 console application .that's does work

#27


楼上的,语法错了.
That dose work. 不是that's does work.
呵呵:)

You have already mentioned "win32" which apparently shows that this program will never works in DOS envirenment(win16).

#28


win16支持win32s,所以某些(甚至很多)win32应用确实可能运行在win16上,比如autocad12。
但是console应用确实不是DOS程序,那只是non-gui win32程序。

#29


thanks for your explaination.

#1


用TC不是更好..

#2


VC1.5 这没用过 
如楼上说的 tc应该很熟悉
教学工具啊

#3


TC2.0中内嵌汇编编译通不过:In-line assembly not allowed in function

#4


如何用vc++6.0编写可以在纯DOS下运行的程序??

#5


/*************** C内嵌汇编示例 ***************/

#include "stdio.h"
#include "conio.h"

int min(int v1, int v2)
{
  asm mov ax,v1;
  asm cmp ax,v2;
  asm jle minexit;
  asm mov ax,v2;
minexit:
  return(_AX);
}

int main(void)
{
  printf("min(10,3) is %d\nmin(34,552) is %d",min(10, 3),min(34, 552));
  getch();
  return 0;
}

/*TC下成功*/

#6


In-line assembly not allowed in function

内部汇编语句不允许。源文件中含有直接插入的汇编语句,若在集成环境下进行编译,则出现此类错误。必须使用TCC命令行编译此源文件。

#7


du51(郁郁思扬) 的程序TC2.0下还是通不过:( 错误提示同上

#8


不会吧....输出结果如下:
/*
min(10,3) is 3
min(34,552) is 34
*/
????
对对....我用的是WIN-TC.

但是,WIN-TC是TC的内核呀.

#9


用VC创建工程的时候,选择console模式

#10


使用TCC编译后生成一个ASM文件,然后呢?

to net_worm(三流):选择console模式它依然是win32程序,不能在纯DOS下运行

du51(郁郁思扬):可能两者的输出还是不一样的吧

#11


当然可以,但你要用标准的c/c++写代码。不要用windows的一些东西。
你也可以用DEV-C++这是从LINUX上移植来的,很好用。

#12


控制台程序啊

#13


控制台程序无法在纯Dos下运行啊。怎么许多人不明白。

#14


搞笑。

VC6.0所产生的可执行文件工作在保护模式下,而DOS是实模式的,两者模式都不一样,VC6.0写的C程序不用想都知道不能在DOS下用的。在DOS下用的EXE,要用实模式的编译器例如tc2.0编写。

#15


VC++、BCB、Delphi都可以用来写纯DOS程序,需要用WDOSX的转换器进行转换。
虽然有一些限制,不过总的来说还是不错的。

#16


PS:DOS也可以运行保护模式程序,带上DPMI扩展器就可以了。
watcom c++、BC++ 4+、Turbo Pascal 6+、DJGPP、Free Pascal等等,都可以生成保护模式的DOS程序。

#17


楼主需要的是能编译出纯DOS的编译器吧 或者确切一点是链接器 TC似乎可以哦 VC没看到这个选项

#18


刚刚google到这个东西 DJGPP.--GCC for DOS
还是GCC强 呵呵 楼主自己研究

#19


PS:DOS也可以运行保护模式程序,带上DPMI扩展器就可以了。
-----------------------------------------------
DOS当然可以运行保护模式程序,DPMI是DOS的保护模式接口规范,但程序需要为DPMI编写专门的代码,VC6.0编译出来的环境并不是为DPMI而写的,它直接使用保护模式,这是不能直接在DOS下用的。

#20


BC31

#21


VC6.0编译出来的要在DOS下用?醒醒吧

#22


不可能

#23


用 TC3.0 或 BC 3.1 都行

#24


要在DOS7.0前的版本运行啊,最好是找老的编译器。
新的编译器不见的支持。

#25


TC2.0应该可以,以前试过的,嵌入汇编没问题的

#26


when you creat a new project.choose the win32 console application .that's does work

#27


楼上的,语法错了.
That dose work. 不是that's does work.
呵呵:)

You have already mentioned "win32" which apparently shows that this program will never works in DOS envirenment(win16).

#28


win16支持win32s,所以某些(甚至很多)win32应用确实可能运行在win16上,比如autocad12。
但是console应用确实不是DOS程序,那只是non-gui win32程序。

#29


thanks for your explaination.