为什么我的 C++ 图形程序没有显示任何 g++ 编译器的输出?
Why my C++ Graphics Program is not showing any output with g++ compiler?
我用C++写了一段代码,如下所示。程序编译成功。但是,当我尝试 运行 .exe 文件时,我没有得到所需的输出。
我的代码:
#include<graphics.h>
#include<stdio.h>
#include<conio.h>
#include<dos.h>
int main( )
{
int gd = DETECT, gm;
initgraph(&gd, &gm, (char*)"");
setcolor(BLUE);
line(100, 100, 200, 200);
getch();
closegraph();
}
我在 Windows 命令提示符中使用以下命令来编译程序:
g++ -m32 -o trial trial.cpp -lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32 "C:\TDM-GCC-64\x86_64-w64-mingw32\lib\libbgi.a"
到 运行 我的 .exe 文件:
trial
对于 cmd 和 ./trial
在 powershell 中。
但在此之后我没有得到任何输出。为什么会这样?
编辑: 在指向您的 libbgi.a
库的路径之前缺少 -L
。此处提供更多详细信息:Directory Options
现在几乎没有人使用 graphics.h
。正如其他人所指出的,有更好的选择。
但是 Whosebug 上有很多关于使用 WinBGIm
的错误代码 -1073741819 (0xC0000005)
的问题,没有任何答案。因此我想 post 一个在这里。
此错误代码是在分段错误时生成的。可能有很多因素导致它,但对于 WinBGIm
,通常是由于库本身的错误。
要使其正常工作,您必须将 graphics.h
的 line 302
和 winbgim.h
(从 official source 下载)从
更改为
int left=0, int right=0, int right=INT_MAX, int bottom=INT_MAX,
至
int left=0, int top=0, int right=INT_MAX, int bottom=INT_MAX,
区别应该显得微不足道;之前有一个错字,因为有两个参数名为 right
.
Bug-free 库和 headers 可用 here。
其实我现在找到了类似的答案。以后的读者可以参考this.
我用C++写了一段代码,如下所示。程序编译成功。但是,当我尝试 运行 .exe 文件时,我没有得到所需的输出。
我的代码:
#include<graphics.h>
#include<stdio.h>
#include<conio.h>
#include<dos.h>
int main( )
{
int gd = DETECT, gm;
initgraph(&gd, &gm, (char*)"");
setcolor(BLUE);
line(100, 100, 200, 200);
getch();
closegraph();
}
我在 Windows 命令提示符中使用以下命令来编译程序:
g++ -m32 -o trial trial.cpp -lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32 "C:\TDM-GCC-64\x86_64-w64-mingw32\lib\libbgi.a"
到 运行 我的 .exe 文件:
trial
对于 cmd 和 ./trial
在 powershell 中。
但在此之后我没有得到任何输出。为什么会这样?
编辑: 在指向您的 libbgi.a
库的路径之前缺少 -L
。此处提供更多详细信息:Directory Options
现在几乎没有人使用 graphics.h
。正如其他人所指出的,有更好的选择。
但是 Whosebug 上有很多关于使用 WinBGIm
的错误代码 -1073741819 (0xC0000005)
的问题,没有任何答案。因此我想 post 一个在这里。
此错误代码是在分段错误时生成的。可能有很多因素导致它,但对于 WinBGIm
,通常是由于库本身的错误。
要使其正常工作,您必须将 graphics.h
的 line 302
和 winbgim.h
(从 official source 下载)从
int left=0, int right=0, int right=INT_MAX, int bottom=INT_MAX,
至
int left=0, int top=0, int right=INT_MAX, int bottom=INT_MAX,
区别应该显得微不足道;之前有一个错字,因为有两个参数名为 right
.
Bug-free 库和 headers 可用 here。
其实我现在找到了类似的答案。以后的读者可以参考this.