web-dev-qa-db-fra.com

Erreur due à #include <graphics.h>

J'essaie de compiler un programme qui inclut le fichier d'en-tête graphics.h pour C. J'ai ajouté les fichiers d'en-tête graphics.h et winbgim.h dans le dossier include, ainsi que libbgi.a dans le dossier lib.

Juste pour tester, j'ai créé un programme simple hello world et inclus le fichier d'en-tête graphics.h.

Mais en compilant j'ai eu l'erreur suivante:

Dans le fichier inclus dans firstc.c: 2: 0: C:\mingw\bin ../lib/gcc/mingw32/4.7.1 /../../../../ include/graphics.h: 30: 59: erreur fatale : sstream: aucune compilation de fichiers ou de répertoires de ce type n'est terminée.

J'ai aussi essayé de chercher dans d'autres forums, où la même question avait été posée, mais je n'ai pas pu obtenir de réponse.

Une autre question, je suis tombé sur d'autres options graphiques pour C et C++ comme OpenGL et DirectX. Devrais-je apprendre ces au lieu de graphics.h?

4
Ayushi Jha

graphics.h est un en-tête non standard. Cela fait probablement référence à l'ancienne bibliothèque graphique BGI du compilateur Turbo C DOS. Cela ne fonctionnera que sur ce compilateur. Et bien entendu, DOS est un système d’exploitation complètement obsolète de nos jours.

Si vous êtes intéressé par la programmation graphique 3D, OpenGL et/ou DirectX sont en effet des alternatives meilleures, modernes, supportées par de nombreux compilateurs.

7
Lundin

Si vous essayez de compiler le code source en incluant “graphics.h” dans code :: blocks IDE, vous devez configurer la bibliothèque winBGIm.

  • Téléchargez WinBGIm depuis http://winbgim.codecutter.org/ ou utilisez ( lien direct )
  • Extrait-le. 
  • Ouvrez graphics.h, allez à la ligne302changez int right=0 en int top=0
  • Copiez les fichiers graphics.h et winbgim.h dans le dossier include du répertoire de votre compilateur.
  • Copiez libbgi.a dans le dossier lib de votre répertoire de compilation 
  • Dans code :: blocks open Settings >> Compiler and debugger >> linker settings 
  • Cliquez sur le bouton Add dans la partie bibliothèques de liens, parcourez et sélectionnez le fichier libbgi.a
  • Dans la partie droite (c.-à-d. D'autres options de l'éditeur de liens), les commandes de collage
    -lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32 
  • Cliquez sur Ok

Vous pouvez également consulter cette vidéo tutorial.

 Compiler options

2
Panos Kal.

Lorsque vous compilez un code source C avec un fichier d’en-tête graphics.h, vous devez modifier l’extension de fichier en .cpp. Sans cela, vous obtiendrez l'erreur «Erreur fatale: sstream: aucun répertoire de fichiers de ce type». 

Donc, changez simplement l'extension .c en .cpp. Voici une procédure pas à pas pour compiler le code source graphics.h si vous utilisez Code :: Blocks pour exécuter le code.

1
Stalker

Si la meilleure réponse ne fonctionne pas et que vous obtenez:

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

  • votre fenêtre graphique n'apparaît pas

    suivre this tutorial et utiliser les en-têtes et bibliothèques corrigés (winBGIm(bug-free).rar) dans le lien source fourni, a fonctionné pour moi dans Windows 10.

Mirror to winBGIm(bug-free_.rar)

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

0
jackw11111