arquivo conio.h erro ausente [fechado]

0

Eu quero executar um arquivo .cpp enquanto contém o arquivo de cabeçalho #include <conio.h> , mas durante a execução estou recebendo o seguinte erro:

"program.cpp:4:20: fatal error: conio.h: No such file or directory compilation terminated."

Eu também tentei com o arquivo de cabeçalho curses.h , mas continuo mostrando o mesmo erro acima. Eu preciso usar esse arquivo de cabeçalho porque estou usando as funções clrscr() e getch() que exigem isso.

Alguém pode me dizer como corrigir esse problema?

    
por Rincy Raphael 28.04.2014 / 06:44

2 respostas

3

O caminho conio.h - clrscr () - getch () não é seguido no Linux . Com isso, você não precisa usar o conio.h e suas funções em uma plataforma Linux.

1. clrscr (): Como você está pensando em usar ncurses , há uma função clear() incluída, o que limpa a tela. Apenas substitua clrscr() por clear() .

2. getch (): O Linux fornece uma grande variedade de funções como gets, fgets, scanf e assim por diante.

3. ncurses: No Linux, o ncurses não depende do conio. Então isso é novamente desnecessário.

clrscr() e getch() fazem parte de conio.h . É usado principalmente em compiladores baseados em MS-DOS. No Linux, eles são meio desnecessários.

    
por 28.04.2014 / 06:49
2

TL; DR

Você basicamente tem duas opções sobre como proceder. Você pode instalar um pacote que inclua conio.h + sua biblioteca como descrevi abaixo ou você pode usar ncurses.h + sua biblioteca e trocar e / ou remover chamadas de função que dependem dele como @Ashish Kulkarni descreve em sua resposta. Qualquer opção é viável e cabe ao desenvolvedor / implementador decidir qual é o caminho "correto".

O conio.h header + library para C / C ++ não é algo que você normalmente encontrará como sendo instalado por padrão na maioria das distros do Linux. Pelo menos não aqueles que eu conheço com o Fedora / CentOS / RHEL / Debian / Ubuntu.

NOTE :: O uso de ncurses.h também não é apropriado aqui, pois essa biblioteca provavelmente não incluirá nenhuma das funções que você está procurando ( clrscr() , getch() , etc.) já que seu arquivo .cpp parece estar vindo de um ambiente Windows originalmente.

No entanto, você tem a opção com o Linux para instalar pacotes de repositórios gerenciados centralmente. Procurando por um pacote que inclua conio.h no meu sistema Fedora, acessei este pacote. Eu percebo que você está no Ubuntu, mas no Fedora o pacote é chamado de libconio , que fornece exatamente as bibliotecas que você está procurando.

$ 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.

Olhando em um sistema Ubuntu eu tenho há um pacote similar chamado elks-libc que também contém conio.h .

$ apt-cache show elks-libc
Package: elks-libc
Priority: optional
Section: devel
Installed-Size: 651
Maintainer: Ubuntu Developers <[email protected]>
Original-Maintainer: Juan Cespedes <[email protected]>
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

E aqui está o arquivo:

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

Você pode simplesmente instalar este pacote para obter o arquivo de cabeçalho + as bibliotecas que seu aplicativo requer para compilar.

$ sudo apt-get install elks-libc

OBSERVAÇÃO: Talvez seja necessário ajustar seu caminho de inclusão para gcc para selecionar esse arquivo de cabeçalho.

elks-libc é somente para processadores Intel 8088

Como mencionado nos comentários, elks-libc é destinado ao uso em sistemas que visam a CPU Intel 8088. Você pode, em vez disso, baixar libconio.h do projeto SourceForge intitulado: Implementação do c ++ Linux do conio.h . Você terá que instalá-lo manualmente, mas não deve ser muito difícil fazer isso.

Simple Linux implementation of Borland's conio (conio.h) library. It uses Ncurses. It includes most functions required to write a basic application using conioh (i.e. getch(), cprintf(), puts() and more).

Você também pode obter toda a fonte do projeto libconio deste projeto do SourceForge intitulado: libconio e descompactá-lo.

Detalhes sobre como fazer isso, além de compilá-lo e compilá-lo, são abordados neste tutorial intitulado: Como usar com o GCC .

    
por 28.04.2014 / 07:05

Tags