我正在尝试编译包含C的graphics.h
头文件的程序。我已在include文件夹中添加了graphics.h
和winbgim.h
头文件以及{{1}到lib文件夹。
为了测试,我制作了一个简单的hello world程序,并包含了libbgi.a
头文件。
但在编译时我收到以下错误:
在firstc.c:2:0中包含的文件中: C:\ MinGW的\ BIN ../ LIB / GCC /的mingw32 / 4.7.1 /../../../../包括/ graphics.h中:30:59: 致命错误:sstream:没有这样的文件或目录编译 终止。
我也尝试在其他论坛中搜索,问过同样的问题,但无法得到答案。
另一个问题是,我遇到了C和C ++的其他图形选项,如openGL和DirectX。我应该学习这些而不是graphics.h吗?
答案 0 :(得分:7)
graphics.h
是非标准标头。最有可能的是它指的是Turbo C DOS编译器的旧BGI图形库。它只适用于特定的编译器。当然,DOS现在是一个完全过时的操作系统。
如果您对3D图形编程感兴趣,那么OpenGL和/或DirectX确实是更好的,现代的替代方案,得到了许多编译器的支持。
答案 1 :(得分:2)
如果您尝试使用code :: blocks IDE中的“graphics.h”编译源代码,则必须设置winBGIm
库。
WinBGIm
或使用(direct link)graphics.h
,转到 302
,将int right=0
更改为int top=0
graphics.h
和winbgim.h
文件复制到编译器目录的include文件夹中。libbgi.a
复制到编译器目录的lib文件夹Settings
>> Compiler and debugger
>> linker settings
Add
按钮,浏览并选择libbgi.a
文件-lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32
Ok
您还可以查看this video教程。
答案 2 :(得分:1)
当您编译具有graphics.h头文件的C源代码时,您需要将文件扩展名更改为.cpp。如果不这样做,您将收到“致命错误:sstream:no such file directory”错误。
因此,只需将.c扩展名更改为.cpp即可。如果您正在使用Code :: Blocks运行代码,那么编译graphics.h源代码step-by-step procedure。
答案 3 :(得分:1)
据我所知,仅当您使用gcc而不是g ++进行编译,尝试使用g ++或将程序转换为c ++时,才会发生sstream错误(因为我是该语言的新手,但之前我曾遇到过此错误)祝你好运
答案 4 :(得分:0)
如果最佳答案不起作用,您将得到:
error: narrowing conversion of 'x' from 'int' to 'short unsigned int'
您的图形窗口没有出现
按照this教程并在提供的winBGIm源链接中使用错误修复的标题/库(winBGIm(bug-free).rar
)在Windows 10中对我有用。
Mirror至winBGIm(bug-free_.rar)
编译为:g++ example.cpp -Wall -m32 -std=c++11 -pedantic -g -lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32 -o example.exe