Error due to #include<graphics.h>

筅森魡賤 提交于 2020-05-06 16:51:47

问题


I am trying to compile a program which includes the graphics.h header file for C. I have added the graphics.h and winbgim.h header files in the include folder and also libbgi.a to lib folder.

Just for testing, I made a simple hello world program and included the graphics.h header file.

But on compiling I got the following error:

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.

I tried to search in other forums as well, where the same question had been asked, but could not get an answer.

Another question, I came across other graphic options for C and C++ like openGL and DirectX. Should I learn these instead of graphics.h?


回答1:


graphics.h is a non-standard header. Most likely it refers to the old BGI graphics library of the Turbo C DOS compiler. It will only work on that particular compiler. And of course DOS is a completely obsolete OS nowadays.

If you are interested in 3D graphics programming, then OpenGL and/or DirectX are indeed better, modern alternatives, supported by many compilers.




回答2:


If you try to compile the source code with including “graphics.h” in code::blocks IDE you have to setup winBGIm library.

  • Download WinBGIm from http://winbgim.codecutter.org/ or use (direct link)
  • Extract it.
  • Open graphics.h, go to line 302 change int right=0 to int top=0
  • Copy graphics.h and winbgim.h files in include folder of your compiler directory.
  • Copy libbgi.a to lib folder of your compiler directory
  • In code::blocks open Settings >> Compiler and debugger >> linker settings
  • Click Add button in link libraries part, browse and select libbgi.a file
  • In right part (ie. other linker options) paste commands
    -lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32
  • Click Ok

You can also check this video tutorial.




回答3:


When you're compiling a C source code having graphics.h header file, you'll need to change the file extension to .cpp. Without doing that, you'll get “fatal error: sstream : no such file directory” error.

So, simply change the .c extension to .cpp. Here's a step-by-step procedure to compiling graphics.h source code if you're using Code::Blocks to run the code.




回答4:


The sstream error occurs only when you are compiling using gcc not g++ , try using g++ or converting the program to c++ , as far as i know ( since i'm new to this language but i've faced this error before ) so goodluck with that




回答5:


If top answer doesn't work, and you are getting:

  • error: narrowing conversion of 'x' from 'int' to 'short unsigned int'

  • your graphics window just doesn't appear

    following this tutorial and using the bug fixed headers/libraries (winBGIm(bug-free).rar) in the provided winBGIm source link, worked for me in Windows 10.

Mirror to winBGIm(bug-free_.rar)

compiling with: g++ example.cpp -Wall -m32 -std=c++11 -pedantic -g -lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32 -o example.exe



来源:https://stackoverflow.com/questions/27839752/error-due-to-includegraphics-h

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!