Dos.h + Pc.h в C и Windows Vista

В настоящее время я ищу работу с Mesa3D для создания графического приложения с OpenGL.

Сейчас я ищу несколько учебных пособий о том, как его использовать, и многие из них написаны с учетом DOS или более старых версий Windows. Когда я запускаю Vista, у меня, похоже, нет нужных мне файлов.

Учебник по Mesa3D, который я использую outportb() и несколько других команд, которые я не могу заставить работать. Посмотрев вокруг, я обнаружил, что вам нужны 2 включаемых файла:

  • dos.h
  • pc.h

Похоже, что их нет в SDK Windows, который поставляется с Visual Studio 2010 (Express) или даже с более старой версией 2005 (Professional), которая у меня есть в настоящее время.

Похоже, их можно найти с помощью компилятора DJGPP, который работает только под DOS и не поддерживается в Vista, даже в режиме совместимости. Запуск DosBox по-прежнему не работает.

Мне интересно - возможно, есть новые функции, заменяющие outportb или я могу использовать эти файлы DJGPP с моим компилятором C/C++ с VS или PellesC (который я нахожу лучше для программ только на C)?

Кроме того, включаемый мной файл conio.h с VS и PellesC не имеет textmode() функция, но версия DJGPP делает.

Если кто-то может помочь заставить DJGPP работать на Vista или позволить мне использовать файлы dos,pc и conio.h из DJGPP с VS или PellesC, это было бы очень полезно!

3 ответа

Аппаратный доступ низкого уровня, который функционирует как outportb дать вам недоступен для программ в современных средах Windows. Такие возможности зарезервированы для специально доверенного кода (внутренние компоненты ОС и драйверы). Вам нужно пройти через высокоуровневые API или драйверы, чтобы получить доступ к той же функциональности.

На веб-сайте Mesa3D есть файл readme для разработчиков Windows, содержащий информацию о том, что вам нужно установить и настроить. Он также ссылается на некоторый официальный демонстрационный код, который вы можете использовать в качестве основы для вашего проекта. На веб-сайте Mesa3D также есть репозиторий, полный демонстрационных программ, которые, вероятно, послужат лучшими примерами, чем устаревшие учебники, которые вы упомянули.

Функции манипулирования портами просто не будут работать в программах Win32. Либо используйте Win32 API для выполнения операций ввода-вывода (включая рендеринг), либо придерживайтесь DOS и запускайте свою программу в DOS или в любом другом эмуляторе DOS, который вам подходит. Vista и более поздние версии Windows не будут запускать большинство программ для DOS напрямую, так как поддержка DOS либо сильно снижена, либо полностью удалена (например, в 64-битной Windows).

Не используйте 16-битные компиляторы на Vista и выше.. вместо этого используйте DOSBOX для запуска ваших программ.

Другие вопросы по тегам