C语言如何安装并使用graphics.h、conio.h等非标准头文件
基础说明
graphics.h和conio.h都不属于C语言标准库范畴:graphics.h最早是Borland Turbo C配套的BGI图形库头文件,conio.h是DOS环境下的控制台IO扩展头文件。现代主流编译器(GCC、Clang、MSVC)默认都不集成这两个头文件的实现,需要根据自身使用的操作系统、编译器手动安装对应兼容组件,配置完成后才能正常调用相关接口。
目前主流的兼容实现对应关系:
graphics.h:Windows平台常用EasyX、WinBGIm;Linux/macOS平台常用libgraphconio.h:MinGW系编译器自带基础功能实现,全平台可通过PDCurses、libconio补全全量功能
Windows平台配置
方案1:EasyX(适配VS、MinGW等多数编译器,配置成本最低)
- 拿到EasyX安装包后直接运行,安装程序会自动识别本地已安装的Visual Studio版本,自动将头文件、静态库拷贝到VS的对应搜索目录,安装完成后直接在代码中写
#include <graphics.h>即可调用图形接口,EasyX自带的实现也覆盖了getch()、kbhit()等绝大多数conio.h的常用函数。 - 如果使用Dev-C++、Code::Blocks、CLion等基于MinGW的编译环境,手动将安装包内include目录下的所有头文件拷贝到MinGW安装路径下的
include文件夹,将对应架构的静态库文件拷贝到MinGW的lib文件夹,编译时追加链接参数-lgraphics -leasyx -lwinmm -lgdi32 -lole32即可。
方案2:WinBGIm(开源BGI标准兼容实现)
- 拿到WinBGIm组件包后,将包内的
graphics.h、winbgim.h头文件拷贝到编译器的include搜索目录,将libbgi.a静态库文件拷贝到编译器的lib搜索目录。 - 编译代码时追加链接参数:
-lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32。 - 注意WinBGIm本身不提供
conio.h实现,MinGW环境默认自带的精简版conio.h可满足多数基础调用需求,如果缺少目标函数可以额外安装PDCurses补全。
conio.h单独配置
- 最新版MinGW-w64默认已经自带基础版
conio.h,支持getch()、kbhit()、gotoxy()等常用函数,如果需要更完整的功能,安装PDCurses库后将对应头文件、静态库放到编译器对应目录,编译时追加-lpdcurses参数即可。
Linux平台配置
graphics.h(libgraph实现)
- 先通过系统包管理器安装编译依赖:build-essential、SDL2、SDL2_image、guile等开发包,Debian/Ubuntu系可直接执行
sudo apt install build-essential libsdl2-dev libsdl2-image-dev guile-3.0-dev完成依赖安装。 - 拿到libgraph源码包后解压,在源码目录依次执行
./configure、make、sudo make install,安装完成后头文件会自动放到系统标准头文件目录,编译代码时追加-lgraph链接参数即可正常调用图形接口。
conio.h配置
- Linux系统无原生
conio.h实现,直接通过系统包管理器安装libconio或者PDCurses开发包即可,Debian/Ubuntu系可执行sudo apt install libconio-dev或者sudo apt install libpdcurses-dev完成安装,编译时根据安装的库追加-lconio或-lpdcurses链接参数。
macOS平台配置
graphics.h可通过编译libgraph实现,先通过Homebrew安装SDL2、guile等依赖,后续编译安装libgraph的流程和Linux一致。conio.h推荐通过Homebrew安装PDCurses实现,执行brew install pdcurses即可获得完整的控制台接口兼容支持。
常见问题排查
- 编译时提示“找不到头文件”:先确认头文件已经放到编译器的默认头文件搜索路径下,也可以在编译时通过
-I 头文件实际存放路径参数手动指定搜索目录。 - 链接阶段提示“未定义的引用”:检查编译时是否已经追加了所有需要的依赖库链接参数,如果库存放路径不在默认搜索目录,可通过
-L 库文件实际存放路径参数手动指定。 - 运行程序时提示缺失动态库:如果编译时使用动态链接,将对应的dll/so/dylib文件放到和可执行文件同目录,或者将库所在路径加入系统的环境变量Path中。
- 老旧Turbo C写的16位DOS代码在现代系统上可能出现运行异常,建议根据兼容库的现代API做适配调整,不要直接硬套旧系统的写法。
内容的提问来源于stack exchange,提问作者Mr_Arsonist
相关产品推荐
相关产品推荐

