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 для запуска ваших программ.