-1

WindowsXPファイル名「hello.c」に単純なHelloWorldアプリケーションを次のように記述しました。

 #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

このアプリを DOS 用ではなく Windows 用にコンパイルしました。効果がないでしょう。DOS で動作するようにアプリをコンパイルする必要があります。なぜそのために Dosbox を使用しているのですか?

于 2013-02-20T14:34:09.633 に答える
1

Windows プログラムをコンパイルしましたが、これは Windows でのみ実行でき、DOS またはエミュレートされた DOS では実行できません。DosBox を使用せずにプログラムを直接実行します。

于 2013-02-20T14:34:43.410 に答える
0

Windows コンソールと DOS コンソールは似ており、同じタイプのコマンドのいくつかを共有していますが、これらは 2 つの完全に異なるオペレーティング システム上に構築されています。

Windows コンソール モード アプリケーションは、最新の 32 ビットまたは 64 ビット コードを実行し、すべての膨大な Windows API にアクセスできます。

DOS コマンド ラインは、(主に) 16 ビット コードを実行する古いオペレーティング システムである DOS の一部です。ファイル処理、メモリ管理、ハードウェア サポートなどのための独自の API と規則があります。これは、DOSBox がエミュレートするプラットフォームです。そのため、DOSBox は Windows プログラムを実行しません。(とは言っても、初期バージョンの Windows 自体を実行できます。これらは単純な DOS プログラムだったからです)。

  • プログラムをコンパイルして DOS で実行する場合は、そのオペレーティング システム用のその時代のコンパイラが必要です。Turbo C++ は良いものです (「turbo c++ 3.0 放棄ウェア」を検索してください)。

  • コンソールで実行する Windows アプリケーションをコンパイルする場合、既存のコンパイラは完璧ですが、DOSBox は必要ありません。代わりに Windows コマンド プロンプト/ライン/シングを開きます ([スタート] -> [ファイル名を指定して実行] -> [cmd] -> [Enter])。

于 2013-02-20T16:09:14.297 に答える