Я пишу простую программу для запуска в режиме DOS. Все работает под эмулированной консолью в Win XP / Vista / Seven, но не в DOS. Ошибка говорит: this program caonnot be run in DOS mode
. Интересно, это проблема флагов компилятора или чего-то большего.
Для программирования я использую Code :: Blocks v 8.02 с такими настройками для компиляции:
-Wall -W -педантика -педантика-ошибки
в Project \ Build options \ Настройки компилятора
Я пробовал чистый режим DOS, загрузку с cd, а также настройку DOS на виртуальной машине. Появляется та же ошибка.
Должен ли я включить еще несколько флагов компилятора? Какие-то конкретные 386/486 оптимизации?
UPDATE
Хорошо, я скачал, установил и настроил DJGPP. Даже решены некоторые проблемы с библиотеками и библиотеками. Еще есть два вопроса.
1) я не могу скомпилировать код, который вызывает _strdate
и _strtime
, я дважды проверил включения, поскольку MSDN говорит, что ему нужно time.h
, но все равно ошибка говорит : _strdate was not declared in this scope
, я даже пытался добавить std :: _ strdate, но тогда у меня 4, а не 2 ошибки, сохраняющие то же самое
2) 2-й код около gotoxy
, это выглядит так:
#include <windows.h>
void gotoxy(int x, int y)
{
COORD position;
position.X = x; position.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), position);
}
ошибка говорит о том, что нет windows.h, поэтому я поставил его на место, но есть еще много ошибок, говорящих о том, что некоторые отсутствуют в windows.h, Я ПРЕДПОЛАГАЮ это не будет работать потому что эта функция строго для Windows, верно? Есть ли способ написать аналог gotoxy
для DOS?
UPDATE2
1) решено с использованием time();
вместо _strdate();
и _strtime();
, вот код
time_t rawtime;
struct tm * timeinfo;
char buffer [20];
time ( &rawtime );
timeinfo = localtime ( &rawtime );
strftime (buffer,80,"%Y.%m.%d %H:%M:%S\0",timeinfo);
string myTime(buffer);
Теперь он компилируется под DJGPP.
Update3
Еще нужно решить код, используя gotoxy
- заменил его другим кодом, который компилируется (в DJGPP).
Спасибо всем за помощь. Просто узнал кое-что новое о компиляции (флаги, старые IDE, такие как DJGPP, OpenWatcom) и обновил память, заставив DOS работать: -)