Problema di compilazione con cmd o terminale

di il
18 risposte

Problema di compilazione con cmd o terminale

Ciao a tutti, ho provato a compilare con gcc il seguente codice da prompt dei comandi, ma mi dice:
fatal error: graphics.h: No such file or directory
1 | #include<graphics.h>
| ^~~~~~~~~~~~
compilation terminated.

#include<graphics.h>
#include<time.h>

int main()
{
 int i, x[100], y[100], rx, ry, gd, gm, l, d=2, s=16;
 srand(time(NULL));
 detectgraph(&gd, &gm);
 initgraph(&gd, &gm, NULL);
 setfillstyle(1, 1);
 bar(s-s/2, s-s/2, (s/2)+s*(1350/s), s+s/2); //top
 bar(s-s/2, (-s/2)+s*(700/s), (s/2)+s*(1350/s), (s/2)+s*(700/s)); //bottom
 bar(s-s/2, s-s/2, s+s/2, (s/2)+s*(700/s)); //left
 bar((-s/2)+s*(1350/s), s-s/2, (s/2)+s*(1350/s), (s/2)+s*(700/s)); //right
 getch();
}
Avete qualche consiglio da darmi sul perchè di questa cosa e come fare a risolverla?

18 Risposte

  • Re: Problema di compilazione con cmd o terminale

    Cerca graphics.h, copia o segnati il percorso, poi cambia così:
    #include "<path completo>/graphics.h"
  • Re: Problema di compilazione con cmd o terminale

    Ma dove di preciso la cerco?
  • Re: Problema di compilazione con cmd o terminale

    Devo installare graphics.h?
  • Re: Problema di compilazione con cmd o terminale

    Graphics.h non è un header standard, quindi o tu hai installato una libreria che ha l'header in questione (e dove l'hai installata lo sai tu, io non ho la sfera di cristallo), oppure ti devi procurare la libreria giusta (ce ne sono diverse, dipende anche da che sistema operativo stai usando).
  • Re: Problema di compilazione con cmd o terminale

    Ho visto che ho una cartella include sul pc che contiene molti file.h tra cui anche math.h quindi penso siano librerie ma manca graphics.h,
    secondo te la devo installare?
  • Re: Problema di compilazione con cmd o terminale

    L'header graphics.h mi pare venga dal Borland Turbo C per Windows (adesso si chiama Embarcadero RAD Studio). Se non hai la libreria, la installi (non credo ti basti copiare graphics.h). In ambiente Linux si trovano delle librerie di compatibilità (delle specie di wrapper).
  • Re: Problema di compilazione con cmd o terminale

    Devo mettere il percorso completo anche se sia graphics.h che il file.c sono sul desktop?
  • Re: Problema di compilazione con cmd o terminale

    Oltre all’header devi linkare pure le librerie statiche
  • Re: Problema di compilazione con cmd o terminale

    Cosa sono ?
  • Re: Problema di compilazione con cmd o terminale

    SuperManPC ha scritto:


    Cosa sono ?
    Sono dei file che contengono il codice compilato della libreria stessa. Durante o dopo la compilazione devono essere aggiunti all'eseguibile del tuo programma, altrimenti non funziona. Se usi gcc, supponendo che il file di libreria si chiami 'libgraphics.a', dovrai compilare così:
    gcc -o test -lgraphics test.c
  • Re: Problema di compilazione con cmd o terminale

    Ok grazie ho capito, però potreste farmi per favore un riepilogo di tutte le cose che devo fare perchè sono un pò in difficoltà a elaborare il tutto.
  • Re: Problema di compilazione con cmd o terminale

    Ho visto su una guida che bisgona avere il file principale Main.c poi un file.h e un altro file.c per la compilazione e la creazione dell' eseguibile.
    Nel file.c viene scritto il codice in c di una funzione per esempio e viene incluso il file.h, in main.c si include file.h che ha dentro solo l' intestazione della funzione per esempio.
    Nel mio caso Main.c è Game.c e il file.h da includere è graphics.h, mi manca però l' altro file.c (che ho detto sopra) che verrà compilato con gcc.
    Avete dei consigli per fare questo terzo file.c ?
  • Re: Problema di compilazione con cmd o terminale

    Fammi capire, stai cercando di scrivere un gioco con grafica e non sai nemmeno come funziona il compilatore C? Non è meglio se parti da cose più semplici? Comunque, il file .h (header file) contiene le dichiarazioni delle funzioni di libreria o di funzioni che sono in un altro file .c. Le definizioni sono o in un altro file .c o in un modulo di libreria. A te servono forse 3 file: il tuo game.c, graphics.h e libgraphics.a (se si chiama così). Di file .c ne puoi avere da uno a tanti, ma non c'è l'obbligo di averne più di uno: la convenienza è che puoi dividere il tuo programma in moduli di lunghezza ridotta che si gestiscono meglio. Ad esempio, anni fa dovetti mettere mano ad un programma che era composto da un unico file lungo circa 4500 righe. E' stato impegnativo lavorarci sopra perché scorrere in continuazione un file così grosso richiede tempo e pazienza. Se l'autore originario avesse spezzato il file in moduli funzionali, avrei risparmiato un po' di tempo.
  • Re: Problema di compilazione con cmd o terminale

    Di nuovo, lo STESSO ERRORE.

    Programmare NON E' come giocare ai videogiochi!!!!
    E' COMPLICATO, COMPLESSO, e richiede un bel po' di CONOSCENZA.

    PRETENDERE di scrivere un programma di grafica (complicato di suo) SENZA AVERE le nozioni FONDAMENTALI, e' una frustazione per te, perche' dovrai affrontare N-mila complicazionie/problemi, e' una perdita di tempo per NOI che dovremmo spiegarti i concetti base della programmazione.

    Ma il forum NON E' un'alternativa allo studio, e non e' un corso di programmazione personalizzato alle TUE esigenze.

    Non sapere che cosa e' un ".h" o una libreria esterna, che sono DUE concetti FONDAMENTALI, dimostra che NON SEI PRONTO, NON HA LE CONOSCENZE per realizzare anche un banale programmino da linea di commando che scriva "Addio Mondo Crudele!!" ("Hello world").

    Come la metterai con i segmentation fault? La gestione della memoria? Allocazione e deallocazione? La gestione degli eventi da tastiera? L'aggiornamento dello schermo? La gestione delle stringhe? I puntatori? Il passaggio parametri? Funzioni e procedure? ...

    GIUSTO per indicare alcuni argomenti ""scottanti"".

    Se anneghi in una pozzanghera, ma che dico pozzanghera, bicchiere d'acqua, cosa succeder' quandro dovrai nuotare nel mezzo dell'oceano?

    Farai domande banali sul forum?

    NEANCHE ai videogiochi parti con il livello 1256, ma dal livello 1 !!!
    Inizia ad imparare a programmare dal livello 1!! E poi si vedra'!!!!
Devi accedere o registrarti per scrivere nel forum
18 risposte