ヘッダファイル.cpp
を含むファイルを実行したいのですが、実行時に次のエラーが発生します。#include <conio.h>
"program.cpp:4:20: 致命的なエラー: conio.h: そのファイルまたはディレクトリのコンパイルが終了しませんでした。"
ヘッダファイルも試してみましたが、curses.h
まだ上記のエラーが表示されます。このヘッダーがclrscr()
必要と機能を使用しているため、このヘッダーを使用する必要があります。getch()
誰でもこの問題を解決する方法を教えてもらえますか?
答え1
conio.h -- clrscr() -- getch() パスは Linux ではありません。。私は、Linuxプラットフォームではconio.hとその機能を使用する必要がないということです。
1. clrscr():使用する予定なので、ncurses
画面clear()
を消去する機能が含まれています。clrscr()
に変更してくださいclear()
。
2. getch():Linux は、get、fgets、scanf などの多数の機能を提供します。
3.n呪い:Linuxでは、ncursesはconioにまったく依存しません。繰り返しますが、これは不要です。
clrscr()
そしてgetch()
それはすべての一部ですconio.h
。主にMS-DOSベースのコンパイラで使用されます。 Linuxでは多少不要です。
答え2
長い話を短く
デフォルトでは、進行方法には2つのオプションがあります。conio.h
以下のように、+itsライブラリを含むパッケージをインストールしたり、ncurses.h
+itsライブラリを使用したり、次のように依存する関数呼び出しを置き換えたり削除したりできます。おにぎり彼の答えに説明されています。どちらのオプションも可能で、どちらが「正しい」パスであるかを決定することは開発者/実装者の役割です。
conio.h
ほとんどのLinuxディストリビューションは通常、C / C ++用のヘッダー+ライブラリをデフォルトでインストールしません。少なくとも私がおなじみのFedora/CentOS/RHEL/Debian/Ubuntuではありません。
メモ::また、ファイルが元のWindows環境から来たように見えるため、ncurses.h
ライブラリに探している機能(clrscr()
、getch()
など)が含まれていない可能性があるため、ここで使用することは不適切です。.cpp
ただし、Linux を使用して、集中管理されたリポジトリからパッケージをインストールすることを選択できます。私のFedoraシステムに含まれているパッケージを探している間、私はconio.h
このパッケージを見つけました。私は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 <[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
ファイルは次のようになります。
$ apt-file list elks-libc | grep conio.h
elks-libc: /usr/lib/bcc/include/conio.h
したがって、このパッケージをインストールするだけで、アプリケーションのコンパイルに必要なヘッダーファイルとライブラリを入手できます。
$ sudo apt-get install elks-libc
メモ:gcc
このヘッダーファイルを選択するには、インクルードパスを調整する必要があります。
elks-libc は 8088 Intel プロセッサでのみ使用できます。
コメントで述べたように、elks-libc
Intel 8088 CPUを対象とするシステムで使用するためのものです。代わりに、libconio.h
次のタイトルのSourceForgeプロジェクトからダウンロードできます。conio.hのLinux C ++実装。手動でインストールする必要がありますが、それほど難しくありません。
Borland conio(conio.h)ライブラリの単純なLinux実装です。 Ncursesを使用してください。これには、conioh(たとえば、getch()、cprintf()、puts()など)を使用して基本的なアプリケーションを作成するために必要なほとんどの機能が含まれています。
libconio
また、このSourceForgeプロジェクトからプロジェクト全体のソースコードを取得することもできます。クネオそしてパッケージを開いてみてください。
これを行う、ビルド、コンパイルする方法の詳細については、次のチュートリアルで確認できます。GCCで使用する方法。