Ошибка файла conio.h

Я хочу выполнить .cpp файл, содержащий заголовочный файл #include <conio.h> , но во время выполнения я получаю следующую ошибку:

"program.cpp: 4: 20: фатальная ошибка: conio.h: нет такой компиляции файла или каталога."

Я также пробовал файл заголовка curses.h , но все еще показываю ту же ошибку, что и выше. Мне нужно использовать этот файл заголовка, потому что я использую функции clrscr() и getch() которые его требуют.

Может ли кто-нибудь сказать мне, как исправить эту проблему?

В Linux не выполняется путь conio.h – clrscr () – getch () . Под этим я подразумеваю, что вам не нужно использовать conio.h и его функции на платформе Linux.

1. clrscr (): поскольку вы планируете использовать ncurses , в нем есть функция clear() , которая очищает экран. Просто замените clrscr() на clear() .

2. getch (): Linux предоставляет широкий набор таких функций, как get, fgets, scanf и т. Д.

3. ncurses: В Linux ncurses не зависит от conio. Так что это лишний раз.

clrscr() и getch() являются частью conio.h . Он в основном используется в компиляторах на базе MS-DOS. В Linux они не нужны.

TL; DR

У вас в основном есть 2 варианта того, как действовать. Вы можете либо установить пакет, который включает в себя conio.h + его библиотеку, как я опишу ниже, либо вы можете использовать ncurses.h + свою библиотеку и заменить и / или удалить вызовы функций, зависящие от нее, как описывает в своем ответе @Ashish Kulkarni . Любой вариант является жизнеспособным, и разработчик / разработчик может решить, какой из них «правильный».


conio.h header + library для C / C ++ – это не то, что вы обычно найдете как устанавливаемое по умолчанию с большинством дистрибутивов Linux. По крайней мере, не те, что мне знакомы с Fedora / CentOS / RHEL / Debian / Ubuntu.

ПРИМЕЧАНИЕ. Также использование ncurses.h здесь не подходит, так как эта библиотека, скорее всего, не будет включать любую из функций, которые вы ищете ( clrscr() , getch() и т. Д.), Так как ваш .cpp файл казалось бы, исходит из среды Windows.

Однако у вас есть возможность с Linux устанавливать пакеты из централизованно управляемых репозиториев. Ищете пакет, который включает conio.h в моей системе Fedora, я включил этот пакет. Я понимаю, что вы на Ubuntu, но на Fedora пакет называется libconio который предоставляет именно те библиотеки, которые вы ищете.

 $ yum info libconio.i686 Loaded plugins: auto-update-debuginfo, changelog, langpacks, refresh-packagekit Available Packages Name : libconio Arch : i686 Version : 1.0.0 Release : 3.2 Size : 6.3 k Repo : rpm-sphere Summary : Implementation of conio.h functions License : GPL Description : libconio is an implementation of conio.h functions that some : DOS and Windows compilers provide. It's purpose is to allow : developers to use functions like getch, getche, textcolor and : others in a linux environment. 

Глядя на систему Ubuntu, у меня есть подобный пакет, называемый elks-libc который также содержит conio.h .

 $ apt-cache show elks-libc Package: elks-libc Priority: optional Section: devel Installed-Size: 651 Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> Original-Maintainer: Juan Cespedes <cespedes@debian.org> Architecture: all Source: linux86 Version: 0.16.17-3.1ubuntu3 Replaces: bcc (<< 0.14.9), linux86 Recommends: bcc (= 0.16.17-3.1ubuntu3) Conflicts: linux86 Filename: pool/main/l/linux86/elks-libc_0.16.17-3.1ubuntu3_all.deb Size: 214574 MD5sum: 75d87d8c2c906579ec84624fff93d76d SHA1: 5cd6d3b9c5a881ad5fcdcffbd5a075761b017731 SHA256: 57bee73becbeae5dc2bc4cd859c13dc065e4a49472d876225e3e37fd6538feb2 Description-en: 16-bit x86 C library and include files This is the C library used to compile with bcc. It includes all the headers and static libraries needed to build 16-bit applications, for Linux/8086, Linux/i386 and DOS .COM executables. Description-md5: 2da04d6881989db1f4a11df4a992c06f Bugs: https://bugs.launchpad.net/ubuntu/+filebug Origin: Ubuntu Supported: 18m 

И вот файл:

 $ apt-file list elks-libc | grep conio.h elks-libc: /usr/lib/bcc/include/conio.h 

Таким образом, вы можете просто установить этот пакет, чтобы получить файл заголовка + библиотеки, которые требуется вашему приложению для компиляции.

 $ sudo apt-get install elks-libc 

ПРИМЕЧАНИЕ. Возможно, вам придется настроить свой путь include к gcc чтобы выбрать этот заголовочный файл.

elks-libc предназначен только для процессоров Intel 8088

Как уже упоминалось в комментариях, elks-libc предназначен для использования в системах, нацеленных на процессор Intel 8088. Вместо этого вы можете скачать libconio.h из проекта SourceForge под названием: Linux c ++ реализация conio.h . Вам придется установить его вручную, но это не должно быть слишком сложно сделать.

Простая реализация Linux библиотеки conio (conio.h) Borland. Он использует Ncurses. Он включает большинство функций, необходимых для написания базового приложения с использованием conioh (т.е. getch (), cprintf (), puts () и т. Д.).

Вы также можете получить весь проект проекта libconio из этого проекта SourceForge под названием libconio и распаковать его.

Подробные сведения о том, как это сделать, а также о его создании и компиляции, рассматриваются в этом учебном пособии под названием « Как использовать с GCC .