无法 运行 graphics.h 在 windows shell 中编程
Unable to run graphics.h program in windows shell
我正在尝试 运行 通过 Windows shell 上的 gcc
这个程序。
我使用的 GCC 版本:
gcc (i686-posix-dwarf-rev0, Built by MinGW-W64 project) 8.1.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
代码:
#include<stdio.h>
#include<graphics.h>
int main(){
int gd = DETECT, gm;
initgraph(&gd, &gm, "");
line(150,150,450,150);
getch();
closegraph();
}
起初,它给我这个错误:
fatal error: graphics.h: No such file or directory
#include<graphics.h>
然后我将 graphics.h
文件添加到我的 gcc
目录中。
但现在它显示此错误:
Gph.C: In function 'int main()':
Gph.C:5:24: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
initgraph(&gd, &gm, "");
^
C:\Users\simple\AppData\Local\Temp\cchdXkih.o:Gph.C:(.text+0x2e): undefined reference to `initgraph'
C:\Users\simple\AppData\Local\Temp\cchdXkih.o:Gph.C:(.text+0x52): undefined reference to `line'
C:\Users\simple\AppData\Local\Temp\cchdXkih.o:Gph.C:(.text+0x63): undefined reference to `closegraph'
collect2.exe: error: ld returned 1 exit status
有人可以建议 运行 我的程序的替代方法吗?我已经在 Visual Studio 和在线编译器上尝试 运行ning 它。
您可以使用 CodeBlocks IDE。 Link.
或者您也可以使用 TurboC++,但您必须对代码做一些小改动:
#include<stdio.h>
#include<graphics.h>
int main(){
int gd = DETECT, gm;
initgraph(&gd, &gm, "C:\TURBOC3\BGI");
line(150,150,450,150);
getch();
closegraph();
}
使用 TurboC++ 的一个优点是您不必将任何额外的文件下载到 运行 您的 graphics.h
程序,这与其他 IDE 如 CodeBlocks 或 DevC++ 不同。
关于
fatal error: graphics.h: No such file or directory
#include<graphics.h>
graphics.h 不是标准库。在这种情况下,它指的是使用 Windows GDI API.
实现 Borland MS-DOS BGI API 的 WinBGIm 库
此外,头文件通常不是库,这就是为什么您会收到“未定义引用”错误的原因 - 您必须 link 库本身,而不仅仅是包含头文件。
对于:
Gph.C:5:24: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
initgraph(&gd, &gm, "");
警告可能很明确,但考虑到您标记了问题 [C],但您使用 .C 而不是 .c 扩展名(小写)命名源代码,则怀疑您是否打算进行 C++ 编译.这会导致在 https://gcc.gnu.org/onlinedocs/gcc/Overall-Options.html 中指定的 C++ 编译。 graphics.h 中未声明参数 const
的事实是常量正确性问题,其中 C 比 C++ 更宽松。作者没有修复它也许令人惊讶。如果您确实使用 C++ 编译,那么您将需要 const_cast
它。
所以你需要:
- 下载 WInBGIm 库,
- 将必要的包含文件路径编译器开关 (
-I
) 添加到我们的构建命令
- 将必要的 linker 开关添加到 link 库的构建命令中,
- 将文件扩展名更改为小写的 .c 以便进行 C 编译。
我正在尝试 运行 通过 Windows shell 上的 gcc
这个程序。
我使用的 GCC 版本:
gcc (i686-posix-dwarf-rev0, Built by MinGW-W64 project) 8.1.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
代码:
#include<stdio.h>
#include<graphics.h>
int main(){
int gd = DETECT, gm;
initgraph(&gd, &gm, "");
line(150,150,450,150);
getch();
closegraph();
}
起初,它给我这个错误:
fatal error: graphics.h: No such file or directory
#include<graphics.h>
然后我将 graphics.h
文件添加到我的 gcc
目录中。
但现在它显示此错误:
Gph.C: In function 'int main()':
Gph.C:5:24: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
initgraph(&gd, &gm, "");
^
C:\Users\simple\AppData\Local\Temp\cchdXkih.o:Gph.C:(.text+0x2e): undefined reference to `initgraph'
C:\Users\simple\AppData\Local\Temp\cchdXkih.o:Gph.C:(.text+0x52): undefined reference to `line'
C:\Users\simple\AppData\Local\Temp\cchdXkih.o:Gph.C:(.text+0x63): undefined reference to `closegraph'
collect2.exe: error: ld returned 1 exit status
有人可以建议 运行 我的程序的替代方法吗?我已经在 Visual Studio 和在线编译器上尝试 运行ning 它。
您可以使用 CodeBlocks IDE。 Link.
或者您也可以使用 TurboC++,但您必须对代码做一些小改动:
#include<stdio.h>
#include<graphics.h>
int main(){
int gd = DETECT, gm;
initgraph(&gd, &gm, "C:\TURBOC3\BGI");
line(150,150,450,150);
getch();
closegraph();
}
使用 TurboC++ 的一个优点是您不必将任何额外的文件下载到 运行 您的 graphics.h
程序,这与其他 IDE 如 CodeBlocks 或 DevC++ 不同。
关于
fatal error: graphics.h: No such file or directory
#include<graphics.h>
graphics.h 不是标准库。在这种情况下,它指的是使用 Windows GDI API.
实现 Borland MS-DOS BGI API 的 WinBGIm 库此外,头文件通常不是库,这就是为什么您会收到“未定义引用”错误的原因 - 您必须 link 库本身,而不仅仅是包含头文件。
对于:
Gph.C:5:24: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
initgraph(&gd, &gm, "");
警告可能很明确,但考虑到您标记了问题 [C],但您使用 .C 而不是 .c 扩展名(小写)命名源代码,则怀疑您是否打算进行 C++ 编译.这会导致在 https://gcc.gnu.org/onlinedocs/gcc/Overall-Options.html 中指定的 C++ 编译。 graphics.h 中未声明参数 const
的事实是常量正确性问题,其中 C 比 C++ 更宽松。作者没有修复它也许令人惊讶。如果您确实使用 C++ 编译,那么您将需要 const_cast
它。
所以你需要:
- 下载 WInBGIm 库,
- 将必要的包含文件路径编译器开关 (
-I
) 添加到我们的构建命令 - 将必要的 linker 开关添加到 link 库的构建命令中,
- 将文件扩展名更改为小写的 .c 以便进行 C 编译。