-1

我在 windows xp 文件名称“hello.c”上编写了简单的 Hello World 应用程序:

 #include<stdio.h>
 int main(){
      printf("Hello World\n");
      return 0;
 }

使用以下命令编译:

gcc hello.c

现在在另一台装有 Windows Vista 的机器上安装了 DosBox 应用程序并尝试运行由 gcc 编译的 a.exe

该应用程序未运行并提供以下消息:

This Program cannot be run in DOS mode.

但是当我在 Windows 资源管理器中双击 a.exe 文件时,它会运行并说:

 Hello World

为什么会有这个消息......

4

3 回答 3

1

你为 Windows 而不是 DOS 编译了这个应用程序。不起作用。您需要编译应用程序才能在 DOS 上运行。你为什么要使用 Dosbox?

于 2013-02-20T14:34:09.633 回答
1

您编译了一个 Windows 程序,该程序只能在 Windows 中运行,而不能在 DOS 或模拟 DOS 中运行。直接运行程序,无需 DosBox。

于 2013-02-20T14:34:43.410 回答
0

Windows 和 DOS 控制台看起来很相似,并且共享一些相同类型的命令,但它们构建在两个完全不同的操作系统上。

Windows 控制台模式应用程序运行现代 32 位或 64 位代码,并且可以访问所有庞大的 Windows API。

DOS 命令行是 DOS 的一部分,这是一个较旧的操作系统,它(主要)运行 16 位代码。它有自己独立的 API 和约定,用于文件处理、内存管理和硬件支持等。这是 DOSBox 模拟的平台。所以,DOSBox 不会运行 Windows 程序。(也就是说,它可以运行 Windows 本身的早期版本,因为那些是普通的 DOS 程序)。

  • 如果你想编译一个在 DOS 上运行的程序,你需要一个那个时代的编译器来支持那个操作系统。Turbo C++ 是一个不错的选择(搜索“turbo c++ 3.0 废弃软件”)。

  • 如果您想编译在控制台中运行的 Windows 应用程序,那么您现有的编译器是完美的,但您不需要 DOSBox。改为打开 Windows 命令提示符/行/事物(开始 -> 运行 -> cmd -> Enter)。

于 2013-02-20T16:09:14.297 回答