EasyX安装后报错“找不到graphics.h”是因未配置头文件路径,需手动在VS项目属性中添加包含目录、库目录及easyx.lib依赖;initgraph崩溃因子系统不匹配,应设为Windows并改入口点;绘图不显示需调用flushdraw()并检查坐标与颜色。

EasyX 安装后 #include <graphics.h> 报错:找不到头文件
根本原因不是没装 EasyX,而是它没配进编译器的头文件搜索路径。Visual Studio 默认不认 EasyX 的安装目录,哪怕你双击 exe 装完了也白搭。
实操建议:
立即学习“C++免费学习笔记(深入)”;
- 确认 EasyX 安装时勾选了「为当前 IDE 自动配置」——但 VS 2019/2022 常失效,别信这个勾选项
- 手动在项目属性里加路径:
项目 → 属性 → 配置属性 → C/C++ → 常规 → 附加包含目录,填入类似C:\EasyX\include(具体路径看你的安装位置) - 同时补上库路径:
链接器 → 常规 → 附加库目录填C:\EasyX\lib - 最后在
链接器 → 输入 → 附加依赖项加上easyx.lib
调用 initgraph() 崩溃或黑窗一闪而过
这是新手最常卡住的地方:EasyX 窗口依赖 Win32 GUI 子系统,但 VS 新建的默认项目是控制台(Console)类型,main() 入口和子系统不匹配。
实操建议:
立即学习“C++免费学习笔记(深入)”;
- 项目属性 → 配置属性 → 链接器 → 系统 → 子系统 改成
Windows (/SUBSYSTEM:WINDOWS) - 入口点改成
WinMain:属性 → 链接器 → 高级 → 入口点 填WinMainCRTStartup(VS 2017+ 可能要填mainCRTStartup,试错即可) - 函数签名必须是
int main()或int WinMain(...),不能带void main()这种非标准写法 - 加一句
getchar();或getch();在closegraph();后面,防止窗口秒退(仅调试时用,正式代码别留)
画线/圆/文字全都不显示,但程序不报错
EasyX 默认开启双缓冲,所有绘图操作先画到内存里的“后台绘图设备”,必须调用 flushdraw() 才刷到屏幕。很多人漏这步,以为函数没生效。
实操建议:
立即学习“C++免费学习笔记(深入)”;
- 每次批量绘图后加
flushdraw();,比如画完 10 个圆,再刷一次就行,不用每画一个都刷 - 如果用了
BeginBatchDraw()/EndBatchDraw(),那必须配对使用,且中间不能混用flushdraw() - 检查颜色是否设成了背景色(比如白底画白色字),用
setbkcolor(RGB(0,0,0))和settextcolor(WHITE)显式指定对比色 - 确认坐标没超出窗口范围——
initgraph(640, 480)后,x ∈ [0, 639],y ∈ [0, 479],越界不报错但不显示
VS 编译提示 LNK2019:无法解析的外部符号 _main
这是子系统和入口函数彻底对不上号的典型症状。VS 认为你该提供 main(),但项目设成了 Windows 子系统,又没提供 WinMain()。
实操建议:
立即学习“C++免费学习笔记(深入)”;
- 优先统一用
int main()+/SUBSYSTEM:CONSOLE(简单调试可用),但注意此时窗口是控制台+图形混合,可能有 cmd 黑框残留 - 更干净的做法是坚持用
WinMain:声明为int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int),然后在里面调initgraph() - 确保项目配置中「配置类型」是「应用程序(.exe)」,不是「动态库(.dll)」或「静态库(.lib)」
- 删掉自动生成的
stdafx.h或targetver.h头(如果没用预编译头),它们有时会干扰入口识别
EasyX 的坑不在 API 多难,而在 Win32 项目配置和绘图生命周期这些“看不见”的环节。尤其是 flushdraw() 和子系统设置,漏一个就白忙十分钟。










