使用 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 测试

使用 Eclipse 和 minGW 的多个“无法解决”问题

MinGW“无法定位程序入口点 libiconv ...”

在 Win7 上无法使用 MinGW 编译 RIES

无法使用 MinGW 和 MSYS 构建 Google 测试 - 找不到 crtdbg.h