编译器找不到 sstream?
Compiler can't find sstream?
我正在尝试编译一个程序,其中包含 C 的 graphics.h
头文件。我在 include 文件夹中添加了 graphics.h
和 winbgim.h
头文件以及 libbgi.a
到 lib 文件夹。
为了测试,我制作了一个简单的 hello world 程序并包含了 graphics.h
头文件。
但是在编译时出现以下错误:
In file included from firstc.c:2:0:
c:\mingw\bin../lib/gcc/mingw32/4.7.1/../../../../include/graphics.h:30:59:
fatal error: sstream: No such file or directory compilation
terminated.
我也尝试在其他论坛上搜索过,那里也有人问过同样的问题,但找不到答案。
另一个问题,我遇到了 C 和 C++ 的其他图形选项,如 openGL 和 DirectX。我应该学习这些而不是 graphics.h 吗?
graphics.h
是一个 non-standard header。很可能它指的是 Turbo C DOS 编译器的旧 BGI 图形库。它只适用于特定的编译器。当然,现在 DOS 已经完全过时了 OS。
如果您对 3D 图形编程感兴趣,那么 OpenGL and/or DirectX 确实是更好的现代替代品,受到许多编译器的支持。
当您编译具有 graphics.h 头文件的 C 源代码时,您需要将文件扩展名更改为 .cpp。如果不这样做,您将收到“致命错误:sstream:没有这样的文件目录”错误。
因此,只需将 .c 扩展名更改为 .cpp。如果您使用 Code::Blocks 到 运行 代码,这里有 step-by-step procedure 编译 graphics.h 源代码。
如果您尝试在 code::blocks IDE 中包含“graphics.h”来编译源代码,您必须设置 winBGIm
库。
- 从 http://winbgim.codecutter.org/ or use (direct link) 下载
WinBGIm
- 提取它。
- 打开
graphics.h
,转到行 302
将 int right=0
更改为 int top=0
- 将
graphics.h
和 winbgim.h
文件复制到编译器目录的 include 文件夹中。
- 复制
libbgi.a
到编译器目录的lib文件夹
- 在code::blocks中打开
Settings
>>Compiler and debugger
>>linker settings
- 单击 link 库部分中的
Add
按钮,浏览 select libbgi.a
文件
- 在右侧部分(即其他 linker 选项)粘贴命令
-lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32
- 点击
Ok
您还可以查看 this video 教程。
如果最佳答案无效,您将得到:
error: narrowing conversion of 'x' from 'int' to 'short unsigned int'
你的图形window只是没有出现
遵循 this 教程并在提供的 winBGIm 源 link 中使用已修复的错误 headers/libraries (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
仅当您使用 gcc 而不是 g++ 进行编译时才会出现 sstream 错误,请尝试使用 g++ 或将程序转换为 c++ ,据我所知(因为我是这种语言的新手,但我遇到过这个错误之前)祝你好运
我正在尝试编译一个程序,其中包含 C 的 graphics.h
头文件。我在 include 文件夹中添加了 graphics.h
和 winbgim.h
头文件以及 libbgi.a
到 lib 文件夹。
为了测试,我制作了一个简单的 hello world 程序并包含了 graphics.h
头文件。
但是在编译时出现以下错误:
In file included from firstc.c:2:0: c:\mingw\bin../lib/gcc/mingw32/4.7.1/../../../../include/graphics.h:30:59: fatal error: sstream: No such file or directory compilation terminated.
我也尝试在其他论坛上搜索过,那里也有人问过同样的问题,但找不到答案。
另一个问题,我遇到了 C 和 C++ 的其他图形选项,如 openGL 和 DirectX。我应该学习这些而不是 graphics.h 吗?
graphics.h
是一个 non-standard header。很可能它指的是 Turbo C DOS 编译器的旧 BGI 图形库。它只适用于特定的编译器。当然,现在 DOS 已经完全过时了 OS。
如果您对 3D 图形编程感兴趣,那么 OpenGL and/or DirectX 确实是更好的现代替代品,受到许多编译器的支持。
当您编译具有 graphics.h 头文件的 C 源代码时,您需要将文件扩展名更改为 .cpp。如果不这样做,您将收到“致命错误:sstream:没有这样的文件目录”错误。
因此,只需将 .c 扩展名更改为 .cpp。如果您使用 Code::Blocks 到 运行 代码,这里有 step-by-step procedure 编译 graphics.h 源代码。
如果您尝试在 code::blocks IDE 中包含“graphics.h”来编译源代码,您必须设置 winBGIm
库。
- 从 http://winbgim.codecutter.org/ or use (direct link) 下载
WinBGIm
- 提取它。
- 打开
graphics.h
,转到行302
将int right=0
更改为int top=0
- 将
graphics.h
和winbgim.h
文件复制到编译器目录的 include 文件夹中。 - 复制
libbgi.a
到编译器目录的lib文件夹 - 在code::blocks中打开
Settings
>>Compiler and debugger
>>linker settings
- 单击 link 库部分中的
Add
按钮,浏览 selectlibbgi.a
文件 - 在右侧部分(即其他 linker 选项)粘贴命令
-lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32
- 点击
Ok
您还可以查看 this video 教程。
如果最佳答案无效,您将得到:
error: narrowing conversion of 'x' from 'int' to 'short unsigned int'
你的图形window只是没有出现
遵循 this 教程并在提供的 winBGIm 源 link 中使用已修复的错误 headers/libraries (
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
仅当您使用 gcc 而不是 g++ 进行编译时才会出现 sstream 错误,请尝试使用 g++ 或将程序转换为 c++ ,据我所知(因为我是这种语言的新手,但我遇到过这个错误之前)祝你好运