我想.cpp
在包含#include <conio.h>
头文件的情况下执行文件,但在执行时出现以下错误:
“program.cpp:4:20:致命错误:conio.h:没有此类文件或目录编译终止。”
我也尝试过使用curses.h
头文件,但仍然显示与上面相同的错误。我需要使用这个头文件,因为我正在使用需要它的clrscr()
和函数。getch()
谁能告诉我如何解决这个问题?
答案1
Linux 中不遵循 conio.h -- clrscr() -- getch() 路径。我的意思是,您不需要在 Linux 平台上使用 conio.h 及其函数。
1. clrscr() :由于您计划使用ncurses
,因此clear()
其中包含一个清除屏幕的功能。只需替换clrscr()
为clear()
.
2. getch() :Linux 提供了大量此类函数,如 gets、fgets、scanf 等。
3.ncurses:在Linux中,ncurses根本不依赖conio。所以这又是不必要的。
clrscr()
并且getch()
都是 的一部分conio.h
。它主要用于基于 MS-DOS 的编译器。在 Linux 中,它们有点不必要。
答案2
长话短说
对于如何继续,您基本上有两种选择。您可以安装包含conio.h
+其库的软件包,如下所述,或者您可以使用ncurses.h
+其库并换出和/或删除依赖于它的函数调用,如下所示@阿什库尔卡尼在他的回答中描述。任一选项都是可行的,并且由开发人员/实施者决定哪一个是“正确”的路径。
conio.h
大多数 Linux 发行版通常不会默认安装 C/C++ 的标头 + 库。至少不是我熟悉的Fedora/CentOS/RHEL/Debian/Ubuntu。
笔记::此外,此处的使用ncurses.h
也不合适,因为该库可能不包含您正在寻找的任何函数(clrscr()
、getch()
等),因为您的.cpp
文件似乎最初来自 Windows 环境。
但是,您可以选择使用 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 一起使用。