私はUbuntuオペレーティングシステムの初心者です。ターミナルボックスでVisual Studioを使用して単純なCプログラミングコードを実行しようとすると、***が表示されます。
致命的なエラー:conio.h:そのファイルまたはディレクトリはありません。
そのような間違い。では、このエラーを修正するにはどうすればよいですか?
答え1
このヘッダファイルは、以前のMS-DOS開発インターフェイスから来ました。 (ほぼ)に置き換えることができますcurses.h
。詳しくはご確認ください。この回答。
conio.h
テキスト ユーザー インターフェイスを生成するために以前の MS-DOS コンパイラで使用される C ヘッダー ファイルです。 Linux、Win32、OS / 2などの非DOSオペレーティングシステム用のコンパイラは、これらの機能のさまざまな実装を提供します。
#include <curses.h>
提供されているほぼすべての機能を提供しますconio.h
ncursesを最初にインストールする必要があります
deb ベースのディストリビューションで使用
sudo apt-get install libncurses5-dev libncursesw5-dev
答え2
あなたがしなければならないのは、MS / PC-DOSプログラムの作成を停止することだけです。まったく異なるオペレーティングシステムを使用しています。
conio.h
C言語とDOS APIバインディングを含むヘッダーの1つ。これを使用するプログラムはMS / PC-DOSプログラムです。
人々は「同じことをしなさい」と呪います。実際にはそうではありません。 DOSコンソールAPIは、POSIX端末I / Oに構築されたフルスクリーンTUIとはまったく異なるパラダイムを持つためです。ある人から別の人への移植はいいえヘッダファイルを変更するのと同じくらい簡単です。 (OS / 2およびWindows NT用のコンパイラには互換性ヘッダがあります。なぜなら、そのオペレーティングシステムにはDOSコンソールAPIによりよくマッピングされる「コンソール」I / Oパラダイムがあるからです。)これは2つの存在を考慮しません。ありません。以前のDOSコード、Borland / Watcom、およびMicrosoftで使用されていたコンソールAPIスタイル。
これ正しい変更は、単に30年前のDOS APIを忘れて、実際のオペレーティングシステムAPI(POSIXターミナルI / Oおよび目的のTUIライブラリ、X11、および目的のツールキットなど)を使用するプログラムを作成することです。
追加読書
- ジョナサンデボインポラード(2010)。CおよびC ++言語のDOS APIへのgenバインディング。一般的な答え。
- https://unix.stackexchange.com/a/558840/5132