BestAns

路漫漫其修远兮,吾将上下而求索

在 CLion、Dev-C++ 或 Code::Blocks 下面配置 EasyX(2024-6-1 更新) 金牌收录

前言

本文提供了将 EasyX 适配到 MinGW 上的库文件,并详细介绍如何将 EasyX 配置到 DevCpp 或 CodeBlocks 等以 MinGW 为编译器的集成开发环境。

平时我工作忙,有问题直接在后面留言,我会尽力修改。

库文件下载

点击这里下载 easyx4mingw_20240601

点击这里下载 easyx4mingw_2023大暑版(上个版本)

(早期版本 easyx4mingw_20220610、20220901 不再提供下载)

支持的 MinGW 版本

支持 TDM-GCC 4.8.1 及以上版本(32 位和 64 位均支持)。即支持 2013 年 9 月 28 日及之后发布的所有版本 TDM-GCC。

使用 TDM-GCC 4.8.1 及以上版本的集成开发环境都可以支持。例如:

  • Code::Blocks 13.12 及以上版本
  • DevCpp 5.8.0 及以上版本

同时额外支持:

  • DevCpp 5.4.0 GCC MinGW 4.7.2(第十三届蓝桥杯大赛学生机 C/C++ 编程环境。从第十四届开始,蓝桥杯使用 DevCpp 5.11)
  • C-Free 5.0(内置 GCC MinGW 3.4.5)

MinGW-w64 的版本繁多,支持有限。例如对于 MinGW-w64 8.1.0 版本,easyx4mingw 支持 x86_64-posix-seh、x86_64-win32-seh、i686-posix-sjlj、i686-win32-sjlj,但不支持 x86_64-posix-sjlj、x86_64-win32-sjlj、i686-posix-dwarf、i686-win32-dwarf。

注:MinGW 版本较多,推荐使用 TDM-GCC。(想了解区别,可以参考[这里]

文件清单

下载的压缩包内文件如下:

easyx4mingw_xxxxxxxx.zip
	├ include <folder>
	│	├ easyx.h 				// 头文件(提供了当前最新版本的接口)
	│	└ graphics.h			// 头文件(在 easyx.h 的基础上,保留了若干旧接口)
	├ lib32 <folder>
	│	└ libeasyx.a			// 针对 TDM-GCC 4.8.1 及以上版本的 32 位库文件
	├ lib64 <folder>
	│	└ libeasyx.a			// 针对 TDM-GCC 4.8.1 及以上版本的 64 位库文件
	└ lib-for-devcpp_5.4.0
		└ libeasyx.a			// 适用于 DevCpp 5.4.0 GCC MinGW 4.7.2 和 C-Free 5.0

配置说明

基本上,任何开发环境配置 easyx for mingw 都只需两步:

1. 安装库文件

下载的压缩包先解压缩,然后将 include 下的头文件和 lib32/lib64 下的库文件,分别拷贝到 MinGW 的头文件和库文件中。如果不确定具体的库文件路径,参考本文末尾的 QA 部分。

2. 增加编译时的链接选项

链接选项增加:-leasyx,这样可以在编译的时候链接 libeasyx.a 库文件。每个项目都要这样设置一次,然后编译即可。

配置详述

CLion 配置 EasyX 的详细说明

1. 安装 MinGW

CLion 默认不带编译器,需要手动安装。注意,MinGW 版本众多,目前 EasyX 支持 TDM-GCC 版本的 MinGW。下载页面:https://jmeubank.github.io/tdm-gcc/download/,下文以版本 9.2.0 为例。

官网下载 tdm64-gcc-9.2.0.exe镜像站下载 tdm64-gcc-9.2.0.exe 均可(57.6M)。

打开 tdm64-gcc-9.2.0.exe 进行 MinGW 安装:

  1. 取消勾选“Check for updated files on the TDM-GCC server”,然后点 Create 按钮。
  2. 设置路径(下文以路径 D:\App\TDM-GCC-64 为例)。
  3. 选择组件。可以全部勾选,对系统有洁癖的,可以取消“Start Menu items”、“Add to PATH”两项。
  4. 点 Install 按钮,稍后即可完成安装。约占用磁盘空间 490MB,4894 个文件。

2. 配置 CLion 使用 TDM-GCC

打开 CLion(以 2021.2.3 英文版为例)

菜单 File -> Settings...,左侧选择 Build, Execution, Deployment / Toolchains 设置,右侧点“+”,选 MinGW,在 Environment 一项选择 D:\App\TDM-GCC-64,然后下面的所有项目都会自动配置好。

如果“+”下面有多项配置,选中 MinGW,拖动到最上面,使其成为默认项。点 OK 保存设置。

3. 配置 EasyX 到 TDM-GCC

下载 easyx4mingw_xxxxxxxx.zip,解压缩。

将 include 文件夹下的 easyx.h 和 graphics.h 拷贝到 D:\App\TDM-GCC-64\x86_64-w64-mingw32\include 文件夹里。

将 lib64\libeasyx.a 拷贝到 D:\App\TDM-GCC-64\x86_64-w64-mingw32\lib 文件夹里。

将 lib32\libeasyx.a 拷贝到 D:\App\TDM-GCC-64\x86_64-w64-mingw32\lib32 文件夹里。

安装完成。

4. 编写 EasyX 程序

打开 CLion,菜单 File -> New Project,选择 C++ Executable,在 Location 里填写项目路径,点 Create 按钮创建项目,然后输入以下代码:

#include <graphics.h>
#include <conio.h>

int main()
{
	initgraph(640, 480);
	circle(320, 240, 100);
	_getch();
	return 0;
}

需要编辑 CMakeLists.txt 引入 EasyX 相关的库文件。在 add_executable(...) 这行前面,增加引入库文件的指令:

link_libraries(libeasyx.a)

编译执行,即可看到画出了一个圆。

Code::Blocks 配置 EasyX 的详细说明

以下配置说明仅以官方原版 Code::Blocks 20.03(64 位)为例,下载地址:https://appzip.cn/codeblocks,假设 Code::Blocks 的安装路径为 D:\App\CodeBlocks。

1. 安装库文件

下载 easyx4mingw_xxxxxxxx.zip,解压缩。

将 include 文件夹下的 easyx.h 和 graphics.h 拷贝到 D:\App\CodeBlocks\MinGW\x86_64-w64-mingw32\include 文件夹里。

将 lib64\libeasyx.a 拷贝到 D:\App\CodeBlocks\MinGW\x86_64-w64-mingw32\lib 文件夹里。由于 Code::Blocks 20.03 只含有 64 位的 mingw,故只需要拷贝这一个库文件。

特别注意:因为 Code::Blocks 20.03 带的是 64 位 MinGW,所以从 lib64 下面拷贝 libeasyx.a。如果使用 Code::Blocks 17.12,自带的是 32 位 MinGW,就要从 lib32 下面拷贝 libeasyx.a。后面的 QA 部分列出了常见编译器自带的 MinGW 版本情况。

2. 增加编译时的链接选项

(1) 创建新项目:菜单 File -> New -> Project...,选择 Console application,点 Go 进入项目向导。语言选择 C++,项目名称 Test,路径 D:\MyDocs\(或根据自己的情况填写),编译器选择 GNU GCC Compiler,其他选项基本不用动,完成。

(2) 编写基本测试代码,代码如下:

#include <graphics.h>
#include <conio.h>

int main()
{
	initgraph(640, 480);
	circle(320, 240, 100);
	getch();
	closegraph();
	return 0;
}

(3) 设置链接库:菜单 Project -> Build options...,左侧选择项目名称 Test,右侧选择选项卡 Linker settings,在 Other linker options 下的文本框里输入 -leasyx,完成。

(4) 点工具栏按钮 Build and run 或按 F9 编译执行,可以看到屏幕画出一个圆。如果这时有编译错误,请根据错误提示修正程序。

3. 生成项目模版,简化操作步骤

通过前面两步已经可以使用 EasyX 了。但是,每次写新项目都要设置链接库,有点麻烦。可以通过生成项目模版简化该过程:

菜单 File -> Save project as template...,填写模版名称:EasyX Application,完成。

下次再创建项目时,可以选择 User templates 下的 EasyX Application,然后选择路径、项目名称,直接开始编写 EasyX 绘图程序,不用再设置链接库。

Dev-C++ 配置 EasyX 的详细说明

以下配置说明仅以 Embarcadero 发布的官方原版 Dev-C++ 6.3 为例,下载地址:https://appzip.cn/devcpp,假设 Dev-Cpp 的安装路径为 D:\App\DevCpp。

1. 安装库文件

下载 easyx4mingw_xxxxxxxx.zip,解压缩。

将 easyx.h 和 graphics.h 拷贝到 D:\App\DevCpp\TDM-GCC-64\x86_64-w64-mingw32\include 文件夹里。

将 lib64\libeasyx.a 拷贝到 D:\App\DevCpp\TDM-GCC-64\x86_64-w64-mingw32\lib 文件夹里。

将 lib32\libeasyx.a 拷贝到 D:\App\DevCpp\TDM-GCC-64\x86_64-w64-mingw32\lib32 文件夹里。

2. 增加编译时的链接选项

(1) 创建新项目:菜单 File -> New -> Project...,选择 Console application,项目名称 Test,语言选择 C++,点 OK,然后将 Test.dev 保存到 D:\MyDocs\Test\(或根据自己的情况填写),完成。

(2) 编写基本测试代码,代码如下:

#include <graphics.h>
#include <conio.h>

int main()
{
	initgraph(640, 480);
	circle(320, 240, 100);
	getch();
	closegraph();
	return 0;
}

(3) 设置链接库:菜单 Project -> Project Options...,选择选项卡 Parameters,然后在 Linker 里面输入 -leasyx,完成。

(4) 点工具栏按钮 Compile & run 或按 F11 编译执行,可以看到屏幕画出一个圆。如果这时有编译错误,请根据错误提示修正程序。

3. 生成项目模版,简化操作步骤

通过前面两步已经可以使用 EasyX 了。但是,每次写新项目都要设置链接库,有点麻烦。可以通过生成项目模版简化该过程:

菜单 File -> New -> Project Template...,填写模版名称:EasyX Application,其他选项可以根据自己喜好填写,完成。

下次再创建项目时,可以直接选择 EasyX Application,然后填写项目名称、选择路径,直接开始编写 EasyX 绘图程序,不用再设置链接库。

常见问题

Q:我配置不好,如何确定是我本机的问题,还是库的问题?有没有封装好的给我测试一下?

A:封装好 EasyX 的 DevC++5.11 绿色版:https://pan.baidu.com/s/1Ccez6M-YcnHOeU1fuCiLQA(提取码:8frc)。使用方法:

  1. 解压到 D:\App\DevCpp 下。
  2. 运行 devcppPortable.exe(已设置好中文环境)。
  3. 创建新项目,选择 Multimedia 下面的 EasyX Application。
  4. 粘贴前文提到的测试代码,编译运行。
  5. 注:该版本已配置 easyx4mingw_20220901。如需更高版本,请手动下载配置。

如果可以看到画出一个圆,表示库没有问题。此时,可以选择使用这个版本的 DevC++,也可以再尝试排查自己之前的配置步骤有什么问题。

Q:文件夹好多,我究竟应该把库文件拷贝到哪里?

A:不同的集成开发环境,所集成的 MinGW 版本不同,配置的路径也不完全一致。下表列出了常见集成开发环境默认的头文件和库文件路径:

集成开发环境 头文件路径 32 位库文件路径 64 位库文件路径
Code::Blocks 20.03 安装路径\MinGW\x86_64-w64-mingw32\include (无) 安装路径\MinGW\x86_64-w64-mingw32\lib
Code::Blocks 17.12 安装路径\MinGW\include 安装路径\MinGW\lib (无)
Code::Blocks 16.01 安装路径\MinGW\include 安装路径\MinGW\lib (无)
Code::Blocks 13.12 安装路径\MinGW\include 安装路径\MinGW\lib (无)
Dev-C++ 6.3 安装路径\TDM-GCC-64\x86_64-w64-mingw32\include 安装路径\TDM-GCC-64\x86_64-w64-mingw32\lib32 安装路径\TDM-GCC-64\x86_64-w64-mingw32\lib
Dev-C++ 5.11(蓝桥杯所用环境) 安装路径\MinGW64\x86_64-w64-mingw32\include 安装路径\MinGW64\x86_64-w64-mingw32\lib32 安装路径\MinGW64\x86_64-w64-mingw32\lib
Dev-C++ 5.8.0 安装路径\MinGW64\x86_64-w64-mingw32\include 安装路径\MinGW64\x86_64-w64-mingw32\lib32 安装路径\MinGW64\x86_64-w64-mingw32\lib
Dev-C++ 5.4.0(蓝桥杯旧版*)(需使用 lib-for-devcpp_5.4.0\libeasyx.a) 安装路径\MinGW32\include 安装路径\MinGW32\lib (无)
C-Free 5.0 (需使用 lib-for-devcpp_5.4.0\libeasyx.a) 安装路径\mingw\include 安装路径\mingw\lib (无)

注:蓝桥杯旧版,指第十三届蓝桥杯大赛学生机 C/C++ 编程环境所用的 Dev-C++ 5.4.0(32 位 mingw 版),线程模型为 win32。
从第十四届蓝桥杯开始,使用 DevCpp 5.11,内置的编译器是 tdm-gcc 4.9.2,该版本及之后版本使用的线程模型为 posix。

Q:创建项目模版时提示错误:Unable to write to C:\Program Files (x86)\Embarcadero\Dev-Cpp\Templates\EasyX Application.template。

A:如果将 Dev-C++ 安装到 C:\Program Files 下面,那么文件的修改是需要管理员权限的。所以,用管理员权限启动 Dev-C++,再重复创建项目模版的步骤即可。成功创建项目模版后,平时使用时,不需要管理员权限启动。

Q:我以前安装过其他版本的 Dev-C++,这次严格按照教程来操作,还是有问题,请问怎么解决?

A:一些老版本的 Dev-C++ 的遗留配置文件可能会对新版本产生影响,配置文件路径为:C:\Users[用户名]\AppData\Roaming\Dev-Cpp,将整个文件夹删掉就好。如果不好找到,就在文件管理器的地址栏输入 %APPDATA%\Dev-Cpp 敲回车,就可以自动跳转到该文件夹,删除即可。

Q:粘贴一些示例代码后,提示无法使用 _getch 函数。

A:用 getch 替代。

Q:系统里安装了多个编译器会有影响吗?

A:很可能会。请检查编译器设置:

  • 对于 Code::Blocks,菜单 Settings / Compiler...,Global compiler settings 下,Selected compiler 选择 GNU GCC Compiler,下面的 Toolchain executables 选项卡里检查一下 Compiler's installation directory,是不是 Code::Blocks 文件夹下的 MinGW。如果你的 Code::Blocks 安装路径是 D:\App\CodeBlocks,那么这里的编译器路径应该是 D:\App\CodeBlocks\MinGW。
  • 对于 Dev C++ 6.3,菜单 Tools/Compiler Options...,下面的 Directories 选显卡,检查 Binaries、Libraries、C Includes、C++ Includes,是不是在 Dev C++ 的安装路径下。

Q:怎么也配置不好,找不到问题在哪,怎么解决?

A:重点检查一下“编译日志”。以官方原版 Dev-Cpp 6.3 为例,配置好之后,点击“全部重新编译”(或按 F12),然后看编译日志:

以示例中的 Dev-Cpp 6.3 环境为例,编译参数为:

g++.exe -c main.cpp -o main.o -I"D:/App/Dev-Cpp/TDM-GCC-64/include" -I"D:/App/Dev-Cpp/TDM-GCC-64/x86_64-w64-mingw32/include" -I"D:/App/Dev-Cpp/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/9.2.0/include" -I"D:/App/Dev-Cpp/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/9.2.0/include/c++"
g++.exe main.o -o Test.exe -L"D:/App/Dev-Cpp/TDM-GCC-64/lib" -L"D:/App/Dev-Cpp/TDM-GCC-64/x86_64-w64-mingw32/lib" -static-libgcc -lEasyX -lgdi32 -lole32

可以通过对照编译参数查找问题。

Q:其他问题?

A:加我 QQ:1438018116,或者加 C 语言革命群:https://go.easyx.cn/qqgroup

评论 (51) -

  • 正在执行任务: C/C++: g++.exe 生成活动文件

    正在启动生成...
    cmd /c chcp 65001>nul && G:\mingw\bin\g++.exe -fdiagnostics-color=always -g C:\Users\Administrator\Desktop\code\c++\*.cpp -o C:\Users\Administrator\Desktop\code\c++\c++.exe -leasyx
    C:\Users\ADMINI~1\AppData\Local\Temp\ccliMGxJ.o: In function `main':
    C:/Users/Administrator/Desktop/code/c++/decode.cpp:88: undefined reference to `initgraph(int, int, int)'
    collect2.exe: error: ld returned 1 exit status

    生成已完成,但出现错误。
  • 在codeblocks中如何启动时去掉控制台,直接显示结果
  • 请问(1) 创建新项目:菜单 File -> New -> Project...,选择 Console application,项目名称 Test,语言选择 C++,点 OK,然后将 Test.dev 保存到 D:\MyDocs\Test\(或根据自己的情况填写),完成。
    如果没有D:\MyDocs\Test\怎么办啊?保存在哪啊?
  • ld returned 1 exit status
    : undefined reference to `circle(int, int, int)'
    大佬,这是怎么回事儿啊😭😭😭😭
    折腾一天了
  • 谢谢,已经解决,测试代码getch()函数已经被微软弃用,新的函数名称为_getch()
  • 大佬你好,我使用的是code::blocks 13.12;编译运行确实能画出圆⚪来了,但是同时报错“Drawing operation was attempted when there was no current window”。导致程序崩溃,且无法再次运行,这个问题应该解决呢
  • 编译项目变更...
    --------
    - 项目文件名: D:\TestEasyX\测试.dev
    - 编译器名: TDM-GCC 4.9.2 64-bit Release

    生成 makefile...
    --------
    - 文件名: D:\TestEasyX\Makefile.win

    正在处理makefile...
    --------
    - makefile处理器: D:\C++编译器\Dev-Cpp\MinGW64\bin\mingw32-make.exe
    - 命令: mingw32-make.exe -f "D:\TestEasyX\Makefile.win" all

    g++.exe -c 测试.cpp -o 测试.o -I"D:/C++编译器/Dev-Cpp/MinGW64/include" -I"D:/C++编译器/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include" -I"D:/C++编译器/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include" -I"D:/C++编译器/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include/c++"

    g++.exe 测试.o -o 测试.exe -L"D:/C++编译器/Dev-Cpp/MinGW64/lib" -L"D:/C++编译器/Dev-Cpp/MinGW64/x86_64-w64-mingw32/lib" -static-libgcc ../C++编译器/Dev-Cpp/MinGW64/x86_64-w64-mingw32/lib/libgdi32.a ../C++编译器/Dev-Cpp/MinGW64/x86_64-w64-mingw32/lib/libole32.a ../C++编译器/Dev-Cpp/MinGW64/x86_64-w64-mingw32/lib32/libeasyx.a

    测试.o:测试.cpp:(.text+0x25): undefined reference to `initgraph(int, int, int)'
    测试.o:测试.cpp:(.text+0x3a): undefined reference to `circle(int, int, int)'
    测试.o:测试.cpp:(.text+0x44): undefined reference to `closegraph()'
    collect2.exe: error: ld returned 1 exit status

    D:\TestEasyX\Makefile.win:25: recipe for target '测试.exe' failed
    mingw32-make.exe: *** [测试.exe] Error 1
    请问有啥问题,弄好几次了都是这样
  • C:\Users\ASUS\AppData\Local\Temp\ccTeO8Jl.o:实训周.cpp:(.text+0x1e): undefined reference to `initgraph(int, int, int)'
    C:\Users\ASUS\AppData\Local\Temp\ccTeO8Jl.o:实训周.cpp:(.text+0x33): undefined reference to `circle(int, int, int)'
    C:\Users\ASUS\AppData\Local\Temp\ccTeO8Jl.o:实训周.cpp:(.text+0x44): undefined reference to `closegraph()'
    collect2.exe: error: ld returned 1 exit status

    我这是什么问题啊
    • 编译环境:VScode 我甚至还特地换了一个MinGW找出问题了,配套文件里面:[安装方法]将 include 文件夹下的头文件和 lib32/lib64 文件夹下的库文件,分别拷贝到 MinGW 的头文件和库文件文件夹中,链接选项增加:"-leasyx",然后编译即可。"-leasyx",这个要加到 tasks.json 文件里面,可以参考链接:&nbsp;<a href="https://zhuanlan.zhihu.com/p/571209192">VScode + EasyX - 知乎 (zhihu.com)</a>&nbsp;,但是他的话有误导的嫌疑我将以前用 mingw64 换成 TDM-GCC-64 ,再把文件复制到对应的文件夹,再加上"-leasyx",就可以了
  • C:\Users\LENOVO\Documents\g++.exe  [Error] D:/LenovoSoftstore/Install/DevC/libeasyx.a: No such file or directory
    C:\Users\LENOVO\Documents\g++.exe  [Error] D:/LenovoSoftstore/Install/DevC/MinGW64/lib/gcc/libgdi32.a: No such file or directory
    C:\Users\LENOVO\Documents\g++.exe  [Error] D:/LenovoSoftstore/Install/DevC/MinGW64/lib/libole32.a: No such file or directory
    C:\Users\LENOVO\Documents\Makefile.win  recipe for target 'Test.exe' failed
    请问我这个是什么问题啊
  • 大佬厉害,dev配置成功!!!找了好久了就你的可以用
  • 如果完全按照教程走还不行那就下一个小龙devc++吧,正在下,不知道行不行
  • 库是不是少了
    #ifdef UNICODE
      #pragma comment(lib,"EasyXw.lib")
    #else
      #pragma comment(lib,"EasyXa.lib")
    #endif
  • In file included from d:\mingw\include\w32api.h:59:0,
                     from d:\mingw\include\windef.h:42,
                     from d:\mingw\include\windows.h:42,
                     from d:\mingw\include\easyx.h:34,
                     from test2.cpp:1:
    d:\mingw\include\sdkddkver.h:194:3: error: #error "_WIN32_WINNT setting conflicts with specified WINVER"
    # error "_WIN32_WINNT setting conflicts with specified WINVER"
       ^~~~~
    PS D:\VScode\c&cpp>
    我这个错误是为什么呢:)
  • 大佬yyds!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  • 呜呜呜呜呜   为啥我vs code编译不了鸭  
  • d:\devc++\dev-cpp\mingw64\x86_64-w64-mingw32\bin\ld.exe  cannot find -lEasyX
    C:\Users\用户名\Desktop\c++程序\项目\collect2.exe  [Error] ld returned 1 exit status
    25    C:\Users\用户名\Desktop\c++程序\项目\Makefile.win  recipe for target 'Test.exe' failed
  • C:\Users\刘\AppData\Local\Temp\cc5XJQP6.o  未命名1.cpp:(.text+0x1e): undefined reference to `initgraph(int, int, int)'
    C:\Users\刘\AppData\Local\Temp\cc5XJQP6.o  未命名1.cpp:(.text+0x33): undefined reference to `circle(int, int, int)'
    C:\Users\刘\AppData\Local\Temp\cc5XJQP6.o  未命名1.cpp:(.text+0x3d): undefined reference to `closegraph()'
    C:\Users\刘\Desktop\collect2.exe  [Error] ld returned 1 exit status
  • 还是不行,其余都照做了
    出现编译不了的情况
    球指导
       [Linker error] main.o:main.cpp:(.text+0x26): undefined reference to `initgraph(int, int, int)'
       [Linker error] main.o:main.cpp:(.text+0x42): undefined reference to `circle(int, int, int)'
       bad reloc address 0x0 in section `.ctors'
      C:\Users\奇咔咔\Desktop\C++\collect2.exe [Error] ld returned 1 exit status
      C:\Users\奇咔咔\Desktop\C++\Makefile.win [Error] [new.exe] Error 1
    • 要用TDM-GCC, 我用MinGW64也是报了这个错误, 我换成TDM-GCC, 就可以正常运行了
  • C:\Users\刘\AppData\Local\Temp\cc5XJQP6.o  未命名1.cpp:(.text+0x1e): undefined reference to `initgraph(int, int, int)'
    C:\Users\刘\AppData\Local\Temp\cc5XJQP6.o  未命名1.cpp:(.text+0x33): undefined reference to `circle(int, int, int)'
    C:\Users\刘\AppData\Local\Temp\cc5XJQP6.o  未命名1.cpp:(.text+0x3d): undefined reference to `closegraph()'
    C:\Users\刘\Desktop\collect2.exe  [Error] ld returned 1 exit status
  • 为什么我不管用我自己配置的,还是devcppPortable.exe都返回源文件未编译。。编译日志显示是Error 127
  • 您好,请问这步:“3. 设置链接库:菜单 Project -> Build options... ,左侧选择项目名称 Test,右侧选择选项卡 Linker settings,然后在 Link libraries 逐个添加:libEasyX.a、libgdi32.a、libole32.a,完成。(这步也可以直接在 Link libraries 里面输入 -lEasyX -lgdi32 -lole32)”添加的时候默认打开的文件夹里面没有这三个文件怎么办呢?在Dev-Cpp文件夹里面找到的这几个文件添加后还是不行。
    • 我也没找到,按他提供代码输进去后报了错误:undefined reference to `initgraph(int, int, int)',不知道大哥是也不是?
      • 我是可以在lib32找到的
  • 这个库里是不是没有视口函数viewport
  • main.o  main.cpp:(.text.startup+0xf): undefined reference to `ege::getinitmode()'
    main.o  main.cpp:(.text.startup+0x27): undefined reference to `ege::initgraph(int, int, int)'
    main.o  main.cpp:(.text.startup+0x4b): undefined reference to `ege::circle(int, int, int, ege::IMAGE*)'
    main.o  main.cpp:(.text.startup+0x50): undefined reference to `ege::getch()'
    main.o  main.cpp:(.text.startup+0x55): undefined reference to `ege::closegraph()'
    collect2.exe  [Error] ld returned 1 exit status
    mingw32-make  *** [E:\source\C++\test\Makefile.win:26: test.exe] Error 1
    这也是mingw版本低吗
    • 这是因为你所使用的集成开发环境中已经配置了 EGE 图形函数库。该库的头文件也叫做 graphics.h,但是你的程序中调用 EasyX 中的函数。所以编译器报告说找不到这些函数。
    • 这个显然是你没有安装好 easyx。
  • 下载了配置好的还是id returnwd 1 exit status怎么办(点了portable devc++)
  • 我最后直接百度网盘下载解压但还是遇到了
    id returnwd 1 exit status
    • 注意,启动的时候,执行devcppPortable.exe,这个用的是文件夹里的配置。如果启动devcpp.exe,可能会受到你电脑其它编译器的影响。
  • 感谢大佬,套用你的方法成功在vscode里完成了配置o(* ̄︶ ̄*)o
  • 请大家遇到跟我一样的问题时:注意是否因为电脑有多个编译器导致codeblock运行当前的编译器选择为其他软件的编译器(要用codeblock原版的编译器),然后还有就是include文件夹里的.h是否已经完全拷贝......(可能是因为各种原因比如重装,编译器太多你拷错地方了)
  • 永远的神!!!经过BestAns的指导成功弄出来了!!!非常谢谢BestAns您!!!!!
  • codeblock 错误:
    D:\CodeBlocks\project\aaaaaa\main.cpp|7|undefined reference to `initgraph(int, int, int)'|
    D:\CodeBlocks\project\aaaaaa\main.cpp|8|undefined reference to `circle(int, int, int)'|
    D:\CodeBlocks\project\aaaaaa\main.cpp|10|undefined reference to `closegraph()'|
    ||error: ld returned 1 exit status|
    ||=== Build failed: 4 error(s), 1 warning(s) (0 minute(s), 0 second(s)) ===|
  • 每次新建项目都提示“No such file or directory”,需要重新add库
    • 你创建项目模版成功了吗?项目模版记录了引用库的信息,从项目模版创建新项目,不会出现你说的问题。
  • 我遇到了这样的错误,该怎么办啊?

    EasyX.cpp:(.text+0x280): undefined reference to `operator delete(void*, unsigned long long)'
    EasyX.cpp:(.text+0x8e): undefined reference to `operator delete(void*, unsigned long long)'
    EasyX.cpp:(.text+0xcf): undefined reference to `operator delete(void*, unsigned long long)'
    Image.cpp:(.text+0x67b): undefined reference to `operator delete(void*, unsigned long long)'
    EasyX.ImageFunc.cpp:(.text+0x11ba): undefined reference to `operator delete(void*, unsigned long long)'
    EasyX.GraphWnd.cpp:(.text+0x161e): undefined reference to `__imp___acrt_iob_func'
    EasyX.GraphWnd.cpp:(.text+0x5ab): undefined reference to `operator delete(void*, unsigned long long)'
    EasyX.DrawOnWnd.cpp:(.text+0x95): undefined reference to `operator delete(void*, unsigned long long)'
    EasyX.InputBox.cpp:(.text+0x4a): undefined reference to `operator delete(void*, unsigned long long)'
    EasyX.GlobalMemory.cpp:(.text+0x5f): undefined reference to `operator delete(void*, unsigned long long)'
    EasyX.DrawOnImg.cpp:(.text+0x606): undefined reference to `operator delete(void*, unsigned long long)'
    EasyX.DrawOnImg.cpp:(.text+0x146): more undefined references to `operator delete(void*, unsigned long long)' follow
    [Error] ld returned 1 exit status
    • 用新版本 easyx4mingw,以及,用 TDM-GCC。

添加评论