Конструкция компилятора — Как мне написать консольный C ++ EXE, который я могу запустить на MSDOS?

Я искал во всем Google для этого, но так и не получил четкого ответа ..
Я пытаюсь написать простое приложение hello world и заставить его работать под msdos (который я буду устанавливать на старой установке, лежащей здесь).

Но обо всем по порядку, я пытался скомпилировать обычное консольное приложение и поместить его в dosbox, чтобы проверить, что не работает, просто говорит, что оно недействительно. Поэтому я предполагаю, что мне нужно что-то еще, чтобы скомпилировать это. Означает ли это, что я обязан создавать свой код в среде msdos? Даже если это так, я понятия не имею, как это сделать, своего рода манекен MSDOS ..

Если кто-то может пролить свет на мой случай, я был бы очень благодарен!

П.С .: Я использую 64-битную систему

4

Решение

Вы можете использовать бесплатный DJGPP Компилятор для DOS.
А также вот документация по использованию DJGPP.

4

Другие решения

Я предполагаю, что вы имеете в виду настоящую DOS, а не командную строку, работающую в Windows.

DOS — это 16-разрядная ОС, поэтому вам понадобится компилятор, способный генерировать 16-разрядный двоичный файл. Консольное приложение Windows является 32-разрядным, поэтому оно не будет работать под DOS. Вам не нужно создавать свой код в среде DOS, вам просто нужен правильный компилятор.

Что касается компиляторов, вы можете проверить OpenWatcom.

2

Microsoft Visual C ++ 1.52 — единственная доступная версия Microsoft
Компилятор C ++, который поддерживает компиляцию 16-битного кода.

http://social.msdn.microsoft.com/forums/en-US/Vsexpressvc/thread/cfc848e8-a797-42a5-8537-892cfc234123

Вам нужно найти старый компилятор, который будет генерировать 16-битные COM-файлы.

2

Может ли это быть в 64-битной системе? ..

Да, 64-битная Windows не может выполнить 16-битную программу. Если вы устанавливаете виртуальный ПК с MS-DOS или 32-битной системой Windows, виртуальный ПК сможет выполнять 16-битную программу.

Вам нужно отредактировать свой вопрос, чтобы сказать, что вы используете 64-битную Windows?

1

Похоже, вы компилируете консольное приложение в современной версии Windows и пытаетесь просто скопировать его в старую версию DOS. Проблема в том, что DOS несовместим с форвардами. Вы не можете запустить программу, скомпилированную с Windows 7 в версиях DOS, предшествующих Windows. Самое простое решение — это скомпилировать ваши программы на самой коробке DOS. В качестве альтернативы, если вы хотите разрабатывать на более новой машине, вам нужен кросс-компилятор, который ориентирован на ОС, где вы хотите запустить свою программу.

0