使用 MinGW - Initgraph() 无法编译
Posted
技术标签:
【中文标题】使用 MinGW - Initgraph() 无法编译【英文标题】:Using MinGW - Initgraph() does not compile 【发布时间】:2019-05-11 07:18:51 【问题描述】:#include <iostream>
#include <winbgim.h>
#include <cstdlib>
#include <graphics.h>
using namespace std;
int main()
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver,&gmode, "");
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
circle(320,240,180);
getch();
closegraph();
return 0;
我收到此错误 -
..\src\LoveGraphics.cpp:18:33: 警告:ISO C++ 禁止转换字符串 > 常量为 'char*' [-Wwrite-strings] initgraph(&gdriver,&gmode, "");
【问题讨论】:
你从哪里得到graphics.h
?那是一个非常古老的图书馆。你应该使用更现代的东西,比如 opengl。
至于错误信息,C++ 中的文字字符串(例如 ""
)实际上是 constant 字符的数组。与其他数组一样,它们衰减为指向其第一个元素的指针,并且该指针的类型为const char*
。这与initgraph
显然期望的char*
非常不同。唯一的解决方案(如果您想继续使用这个 非常 旧且过时的库)是创建自己的非常量数组。
错误消息有助于告诉您要更改哪个编译选项。使用 -Wwrite-strings-
【参考方案1】:
如果将空字符串传递给 initgraph(),则包含驱动程序的 BGI 文件必须位于当前目录中。
关于你可以尝试的 C++ 错误
string dummy = "";
initgraph(&gdriver,&gmode, dummy);
它可能会起作用。但是我同意 cmets,这是一个非常古老的图书馆。为什么不在机器的 [a partition of] 上安装 linux 并学习使用 gdk 或 Cairo?
【讨论】:
嗨 Jon Guiton,我试过“string dummy”,但它不起作用。 现在,此外,由于先前的错误,我还遇到了更多错误。请提供对“initgraph”的未定义引用。 听起来编译器没有找到头文件和/或库。 All - 经过数小时的谷歌研究后,我得出结论,使用 GRAPHICS.H 来满足我对图形执行的渴望是零感觉。根据您的所有建议,我现在已经将 OpenGL 和 IDE 下载为 DEV-C++ .. 但似乎仍在努力使用 C++ 进行图形编程......来自技术人员的任何好的解决方案肯定会有所帮助。谢谢,穆克什以上是关于使用 MinGW - Initgraph() 无法编译的主要内容,如果未能解决你的问题,请参考以下文章
BGI错误:图形未初始化(使用initgraph)...在DOSBOX中...... Win 7
无法在 Windows 上使用 MinGW 编译 google 测试