扩展知识:vscode配置easyx
前言
因为个人用习惯了vscode,对于visual studio的操作只能说相当程度上很不适应,因此,我打算经历一番配置,让vscode可以配置上easyx。
尽管参考了不少博客,但是不是在被踢来踢去的就是搞得特别复杂。不行,只能自己尝试了。
早年写这篇博客逻辑颇有些混乱,现在重写一下,避免造成一些不必要的误解(当然,也因为现在部分设置的步骤同当年不同,有些抽象的坑其实)。
个人的最初动机就是,Visual C++系列太笨重,我不需要。
笔者环境:
-
MinGW-w64(因为我根据这个配置的我的vscode环境:Get Started with C++ and MinGW-w64 in Visual Studio Code)
其实另一个原因是据在 CLion、Dev-C++ 或 Code::Blocks 下面配置 EasyX(2025-1-17 更新)所述,这玩意就得用MinGW
-
vscode(
这不废话吗) -
Windows 10 专业版(内部版本号:19043.928)
Note:
- 由于笔者现在已经用不到easyx了,故MinGW的配置,没有考虑到可能的后续使用时版本不支持的问题,默认安装此时最新的mingw-w64
- 假如你不计划看什么踩坑,直接去看Ok-TODO
目录
Try-TODO
尝试不一定能很顺利,不过大体上应该是没问题的,部分遇到问题的部分嘛,就可能在Ok-TODO里面搞定,Ok-TODO就是完全跑通的顺利环节(至少笔者自己的电脑是这样)
开始的话,参照在 CLion、Dev-C++ 或 Code::Blocks 下面配置 EasyX(2025-1-17 更新)所述,首先是下载mingw-w64,然后下载库文件,放库文件。最后加个编译选项。那么就按照这个路子走就是。
具体给vscode下载,其实参照https://code.visualstudio.com/docs/cpp/config-mingw就行,考虑到小白的需要,我也走下流程吧
下载安装mingw-w64并配置系统环境变量
-
visit mingw-w64
左边导航栏选择Getting Started,然后选MSYS2 (GCC),毕竟是windows平台

-
然后就要下载安装它
首先visit https://www.msys2.org/
下载就是

然后双击我们的exe文件,默认设置next就是(你也可以自己看下官方文档折腾自定义的其他配置,这个坑就不带着踩了),过程似乎有些耗时间,耐心等下

然后需要运行命令
pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain至于为什么不用https://www.msys2.org/的
pacman -S mingw-w64-ucrt-x86_64-gcc,那是因为跟着https://code.visualstudio.com/docs/cpp/config-mingw走的,运行的时候你会发现toolchain包含了gcc
然后,default就是(我也不知道哪些可选,毕竟我对此不是十分了解,做不到可能的可选配置,按照官方走就是),回车后输入
Y,等下载安装完成
-
设置环境变量(用惯了Linux表示很蛋疼)



我们要加的路径是
C:\msys64\ucrt64\bin(如果你自定义了下载路径,按你自己的来)
然后点一堆确定就是
-
打开cmd看下

-
打开vscode看下


确定安装没毛病,折腾easyx吧
安装easyx
基本上,任何开发环境配置 easyx for mingw 都只需两步:
- 安装库文件
下载的压缩包先解压缩,然后将 include 下的头文件和 lib32/lib64 下的库文件,分别拷贝到 MinGW 的头文件和库文件中。如果不确定具体的库文件路径,参考本文末尾的 QA 部分。
- 增加编译时的链接选项
链接选项增加:-leasyx,或者在 CMakeLists.txt 里面增加相关的链接命令:target_link_libraries(编译目标 libeasyx.a),这样可以在编译的时候链接 libeasyx.a 库文件。每个项目都要这样设置一次,然后编译即可。

如果说那你需要不同版本的easyx,一般来说唯一的办法就是安装·Visual C++,然后去人家的lib里面扒拉库文件,你可以参考下面的寻找
关键在于,首先,我们需要easyx的头文件,以及easyx头文件所对应的函数实现。让我们找到它。我的visual studio是2022版。
lib(静态链接库):
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\VS\lib\x86
-
EasyXa.lib-
EasyXw.lib
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\VS\lib\x64
-
EasyXa.lib-
EasyXw.libh(头文件) :
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\VS\include
-
easyx.h-
graphics.h
找到它们后,先把它们放到一个文件夹里面备用。
不过为了方便起见。用人家https://codebus.cn/bestans/easyx-for-mingw提供的就是

解压后看下readme

MinGW的头文件和库文件文件夹是哪里呢,查找一下(ctrl+左键点击)

很好,头文件都在C:\msys64\ucrt64\include下
头文件放过去

库文件,就是所谓.a文件,需要放到lib去,你可以了解一下什么是.a文件:以.a(a为后缀)的文件类型是啥鸭?_.a文件-CSDN博客|linux c下的c文件 h文件 o文件 so文件 a文件 可执行文件 gcc使用
由于开发环境是64位(你是否发现我们路径也好,其他啥也好,都是64位的呢),那么放64位的.a

库文件和头文件搞定,接下来就是搞编译选项了
编译选项
我不知道你是否用过gcc xx -o xx之类的命令,本质上来说,所谓的IDE能完成点一下就能编译运行,就是把命令整个命令需要的参数通过某个文件设置好了。
对于我们的vscode来说,就是.vscode下的文件起这个作用,首先需要找到这个库,再然后需要链接这个库,于是,一个需要添加搜索路径,另一个需要确定-l链接的库,这个工作在.vscode/tasks.json中完成
参考如下
看了后你应该就明白为什么是-leasyx了
仅仅需要指定一下我们的库文件搜索路径目录,然后添加编译选项leasyx即可(对不起,我真的不想用什么cl,也不想用什么shell诸如此类的东西,能简简单单搞定的事情就不要搞太复杂QWQ)
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++.exe 生成活动文件",
"command": "C:\\msys64\\mingw64\\bin\\g++.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"-L", // 在库文件的搜索路径列表中添加dir目录,
"C:\\msys64\\mingw64\\lib",
"-leasyx"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
}
],
"version": "2.0.0"
}
demo代码如下:
#include <graphics.h>
#include <conio.h>
int main()
{
initgraph(800, 600);
// 按任意键退出
_getch();
closegraph();
return 0;
}
踩坑并解决
然后出事了
C:/msys64/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\msys64\ucrt64\lib/libeasyx.a(EasyX.GraphWnd.o):EasyX.GraphWnd.cpp:(.text+0x198c): undefined reference to `__imp___iob_func'
于是想到说,应该是MinGW版本的问题,怎么做呢,进入到pacman环节
首先打开mingw64.exe,看下有哪些仓库
pacman -Slq | grep '^mingw-w64'
可以注意到,除了mingw-w64-ucrt-x86_64,还有mingw-w64-x86_64,mingw-w64-clang-x86_64,mingw-w64-cross
那么,我们用mingw-w64-x86_64看看吧
pacman -S --needed base-devel mingw-w64-x86_64-toolchain
依然回车输个Y
然后是老生常谈系统环境变量,添加C:\msys64\mingw64\bin,上移到此前设置的C:\msys64\ucrt64\bin,检查一下是否切换完成

最好重新弄个文件夹放我们的demo.cpp和1.cpp
然后
tasks.json
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++.exe build active file",
"command": "C:\\msys64\\mingw64\\bin\\g++.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "Task generated by Debugger."
}
],
"version": "2.0.0"
}
运行一下
#include<iostream>
int main(void)
{
std::cout<<"hello world"<<std::endl;
return 0;
}

然后继续乾坤大挪移,放库文件和头文件
头文件->C:\msys64\mingw64\include
库文件->C:\msys64\mingw64\lib
修改tasks.json
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++.exe build active file",
"command": "C:\\msys64\\mingw64\\bin\\g++.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"-L", // 在库文件的搜索路径列表中添加dir目录
"C:\\msys64\\mingw64\\lib",
"-leasyx"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "Task generated by Debugger."
}
],
"version": "2.0.0"
}
运行demo
#include <graphics.h>
#include <conio.h>
int main()
{
initgraph(800, 600);
// 在控制台按任意键退出
_getch();
closegraph();
return 0;
}

搞定。
Ok-TODO
下载安装mingw-w64并配置系统环境变量
-
visit mingw-w64
左边导航栏选择Getting Started,然后选MSYS2 (GCC),毕竟是windows平台

-
然后就要下载安装它
首先visit https://www.msys2.org/
下载就是

然后双击我们的exe文件,默认设置next就是(你也可以自己看下官方文档折腾自定义的其他配置,这个坑就不带着踩了),过程似乎有些耗时间,耐心等下

我们实际需要打开的应该是
C:\msys64\mingw64.exe,然后需要运行命令pacman -S --needed base-devel mingw-w64-x86_64-toolchain

然后,default就是,回车后输入
Y,等下载安装完成
-
设置环境变量(用惯了Linux表示很蛋疼)



我们要加的路径是
C:\msys64\mingw64\bin(如果你自定义了下载路径,按你自己的来)
然后点一堆确定就是
-
打开cmd看下

-
打开vscode看下


安装easyx
基本上,任何开发环境配置 easyx for mingw 都只需两步:
- 安装库文件
下载的压缩包先解压缩,然后将 include 下的头文件和 lib32/lib64 下的库文件,分别拷贝到 MinGW 的头文件和库文件中。如果不确定具体的库文件路径,参考本文末尾的 QA 部分。
- 增加编译时的链接选项
链接选项增加:-leasyx,或者在 CMakeLists.txt 里面增加相关的链接命令:target_link_libraries(编译目标 libeasyx.a),这样可以在编译的时候链接 libeasyx.a 库文件。每个项目都要这样设置一次,然后编译即可。

如果说那你需要不同版本的easyx,一般来说唯一的办法就是安装·Visual C++,然后去人家的lib里面扒拉库文件,你可以参考下面的寻找
关键在于,首先,我们需要easyx的头文件,以及easyx头文件所对应的函数实现。让我们找到它。我的visual studio是2022版。
lib(静态链接库):
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\VS\lib\x86
-
EasyXa.lib-
EasyXw.lib
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\VS\lib\x64
-
EasyXa.lib-
EasyXw.libh(头文件) :
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\VS\include
-
easyx.h-
graphics.h
找到它们后,先把它们放到一个文件夹里面备用。
不过为了方便起见。用人家https://codebus.cn/bestans/easyx-for-mingw提供的就是

解压后看下readme

MinGW的头文件和库文件文件夹是哪里呢,当然是C:\msys64\mingw64\include和C:\msys64\mingw64\lib
需要做的是
easyx4mingw_20240601\include的easyx.h和graphics.h->C:\msys64\mingw64\include
easyx4mingw_20240601\lib64\libeasyx.a->C:\msys64\mingw64\lib
编译选项
修改.\vscode\tasks.json,添加搜索和链接参数
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++.exe build active file",
"command": "C:\\msys64\\mingw64\\bin\\g++.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"-L", // 在库文件的搜索路径列表中添加dir目录
"C:\\msys64\\mingw64\\lib",
"-leasyx"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "Task generated by Debugger."
}
],
"version": "2.0.0"
}
运行demo
运行demo
#include <graphics.h>
#include <conio.h>
int main()
{
initgraph(800, 600);
// 在控制台按任意键退出
_getch();
closegraph();
return 0;
}

搞定!
参考资料
easyx:
gcc:
- gcc的常用选项与编译_gcc编译时,添加选项 -wl,-rpath,动态库的路径-CSDN博客
- linux c下的c文件 h文件 o文件 so文件 a文件 可执行文件 gcc使用
- GCC -l 选项添加链接库_ggc 链接库】-CSDN博客
- 以.a(a为后缀)的文件类型是啥鸭?_.a文件-CSDN博客




浙公网安备 33010602011771号