程序停止工作 - graphics.h
Program stops working - graphics.h
我创建了一个绘制矩形的程序,但是一旦启动,就会弹出 window 并显示:"Unfortunately, the program has stoped"。为什么会这样?我能做些什么来修复它?
#include <iostream>
#include <graphics.h>
int main() {
initwindow(500, 300);
getch();
rectangle(200, 100, 200, 100);
closegraph();
}
那是因为你是 运行ning 旧的 16 位 MS-DOS 应用程序最有可能在 Win7 或更新的 OS 这不是一个好主意(并且在 x64 位上甚至不再工作)。即使您使用的是 32 位编译器,Borland BGI 也是 16 位的。问题的另一种可能性是错误的 gfx BGI-driver ,我没有看到任何地方的初始化(我错过了 initgraph
的使用,但更新的确实使用了 BGI 所以我可能是错的)。那么怎么办:
- 用一些工作示例检查你的代码SO
上有很多
- 检查BGI 驱动程序位置(旧MS-DOS 仅支持
paths+filename
66
个字符!!!)
- 尝试 运行 您的应用程序处于兼容模式(MS-DOS 或 W9x 或 经验值)
- 将旧的 16 位 Borland BGI 替换为 WinBGI 模拟器
- 运行 您的应用程序在 DOSBox 或任何 MS-DOS模拟器
您还没有使用 InitGraph() 启动图形引擎
http://www.programmingsimplified.com/c-graphics-programming-tutorial
就像OpenGL、Direct3D、SDL等都有初始化函数一样,华大也有InitGraph(),连画一个简单的点都必须要用到!
我创建了一个绘制矩形的程序,但是一旦启动,就会弹出 window 并显示:"Unfortunately, the program has stoped"。为什么会这样?我能做些什么来修复它?
#include <iostream>
#include <graphics.h>
int main() {
initwindow(500, 300);
getch();
rectangle(200, 100, 200, 100);
closegraph();
}
那是因为你是 运行ning 旧的 16 位 MS-DOS 应用程序最有可能在 Win7 或更新的 OS 这不是一个好主意(并且在 x64 位上甚至不再工作)。即使您使用的是 32 位编译器,Borland BGI 也是 16 位的。问题的另一种可能性是错误的 gfx BGI-driver ,我没有看到任何地方的初始化(我错过了 initgraph
的使用,但更新的确实使用了 BGI 所以我可能是错的)。那么怎么办:
- 用一些工作示例检查你的代码SO 上有很多
- 检查BGI 驱动程序位置(旧MS-DOS 仅支持
paths+filename
66
个字符!!!) - 尝试 运行 您的应用程序处于兼容模式(MS-DOS 或 W9x 或 经验值)
- 将旧的 16 位 Borland BGI 替换为 WinBGI 模拟器
- 运行 您的应用程序在 DOSBox 或任何 MS-DOS模拟器
您还没有使用 InitGraph() 启动图形引擎
http://www.programmingsimplified.com/c-graphics-programming-tutorial
就像OpenGL、Direct3D、SDL等都有初始化函数一样,华大也有InitGraph(),连画一个简单的点都必须要用到!