PDA

View Full Version : Aiuto!!! - Errori di compilazione in C con OpenGL


anx721
06-04-2003, 14:27
Salve a tutti,

devo scrivere dei programmi in C usando le librerie grafiche openGL, ma se inserisco le istruzioni di include per le librerie grafiche vengono un sacco di errori in fase di compilazione, per esempio:

#include <GL/gl.h>

int main(int argc, char **argv){
return 0;

}

dà questi errori:

Error c:\windows\desktop\proget~1\cubo.c: C:\lcc\include\GL\gl.h: 1151 syntax error; found `void' expecting `;'
Error c:\windows\desktop\proget~1\cubo.c: C:\lcc\include\GL\gl.h: 1151 syntax error; found `glAccum' expecting `;'
Error c:\windows\desktop\proget~1\cubo.c: C:\lcc\include\GL\gl.h: 1152 syntax error; found `void' expecting `;'
Error c:\windows\desktop\proget~1\cubo.c: C:\lcc\include\GL\gl.h: 1152 syntax error; found `glAlphaFunc' expecting `;'
Error c:\windows\desktop\proget~1\cubo.c: C:\lcc\include\GL\gl.h: 1153 syntax error; found `GLboolean' expecting `;'
Error c:\windows\desktop\proget~1\cubo.c: C:\lcc\include\GL\gl.h: 1153 redeclaration of `APIENTRY' previously declared at C:\lcc\include\GL\gl.h 1152
Error c:\windows\desktop\proget~1\cubo.c: C:\lcc\include\GL\gl.h: 1153 syntax error; found `glAreTexturesResident' expecting `;'
Error c:\windows\desktop\proget~1\cubo.c: C:\lcc\include\GL\gl.h: 1154 syntax error; found `void' expecting `;'
Error c:\windows\desktop\proget~1\cubo.c: C:\lcc\include\GL\gl.h: 1154 redeclaration of `APIENTRY' previously declared at C:\lcc\include\GL\gl.h 1153
Error c:\windows\desktop\proget~1\cubo.c: C:\lcc\include\GL\gl.h: 1154 syntax error; found `glArrayElement' expecting `;'
Error c:\windows\desktop\proget~1\cubo.c: C:\lcc\include\GL\gl.h: 1155 syntax error; found `void' expecting `;'
Error c:\windows\desktop\proget~1\cubo.c: C:\lcc\include\GL\gl.h: 1155 syntax error; found `glBegin' expecting `;'
Error c:\windows\desktop\proget~1\cubo.c: C:\lcc\include\GL\gl.h: 1156 syntax error; found `void' expecting `;'
Error c:\windows\desktop\proget~1\cubo.c: C:\lcc\include\GL\gl.h: 1156 syntax error; found `glBindTexture' expecting `;'
Error c:\windows\desktop\proget~1\cubo.c: C:\lcc\include\GL\gl.h: 1157 syntax error; found `void' expecting `;'
Error c:\windows\desktop\proget~1\cubo.c: C:\lcc\include\GL\gl.h: 1157 syntax error; found `glBitmap' expecting `;'
Error c:\windows\desktop\proget~1\cubo.c: C:\lcc\include\GL\gl.h: 1158 syntax error; found `void' expecting `;'
Error c:\windows\desktop\proget~1\cubo.c: C:\lcc\include\GL\gl.h: 1158 syntax error; found `glBlendFunc' expecting `;'
Error c:\windows\desktop\proget~1\cubo.c: C:\lcc\include\GL\gl.h: 1159 syntax error; found `void' expecting `;'
Error c:\windows\desktop\proget~1\cubo.c: C:\lcc\include\GL\gl.h: 1159 syntax error; found `glCallList' expecting `;'
Error c:\windows\desktop\proget~1\cubo.c: C:\lcc\include\GL\gl.h: 1160 too many errors


oppure:

#include <gl/glut.h>

int main(int argc, char **argv){
return 0;
}

Warning C:\lcc\include\gl\glut.h: 549 static `int function(pointer to void function(int)) glutCreateMenu_ATEXIT_HACK' is not referenced
Warning C:\lcc\include\gl\glut.h: 503 static `int function(pointer to const char) glutCreateWindow_ATEXIT_HACK' is not referenced
Warning C:\lcc\include\gl\glut.h: 486 static `void function(pointer to int,pointer to pointer to char) glutInit_ATEXIT_HACK' is not referenced
cubo.obj .text: undefined reference to '___glutInitWithExit@12'
cubo.obj .text: undefined reference to '___glutCreateWindowWithExit@8'
cubo.obj .text: undefined reference to '___glutCreateMenuWithExit@8'
Compilation + link time:3.7 sec, Return code: 3

Sembra che si trovino errori nel file gl.h o glut.h, non so, cosa significano???? :muro: :mc:

Grazie a chi mi saprà dare una mano.

ultio
06-04-2003, 20:12
#ifdef __FLAT__

#include windows.h

#endif
#include <GL/gl.h> //sempre che la libreria sia in questa posizione


int main(int argc, char** argv)

{

glutInit (&argc, argv) ;

glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB) ;

glutInitWindowSize (400, 100) ;

glutInitWindowPosition (100, 100) ;

glutCreateWindow ("nome finestra") ;



init() ;

glutDisplayFunc (display) ;



glutMainLoop () ;



return 0 ;

}

ultio
06-04-2003, 20:12
usi visual c++ vero?

anx721
06-04-2003, 20:45
Ciao,

ho usato il tuo codice, ma vengono fuori sempre gli stessi errori, che ci sono sempre se uso l'istruzione include gl/gl.h o include gl/glut.h e non capisco perchè. Per compilare ho usato lcc-win32 e anche il compilatore della borland, ma ci sono sempre gli stessi errori che non ho avuto all'università dove è istallato visual c++. Dpende da questo??? Ad ogni modo se quelle librerie sono incluse deve pur esserci un modo per usarle... :muro:

Ciao.

DoomIII
06-04-2003, 21:22
Originally posted by "anx721"

Salve a tutti,

devo scrivere dei programmi in C usando le librerie grafiche openGL, ma se inserisco le istruzioni di include per le librerie grafiche vengono un sacco di errori in fase di compilazione, per esempio:

#include <GL/gl.h>
...
...


ciao, scusa... sei sicuro di indicare la libreria OpenGL? Cioè OK #include per l'header alla libreria come sopra... ma indichi il link alla libreria? ;)

prova ad aggiungere:
#pragma comment(lib, "opengl.lib")

o altrimenti indica nel setup del progetto il link alla libreria.

anx721
06-04-2003, 23:18
prova ad aggiungere:
#pragma comment(lib, "opengl.lib")

Non funziona neanche cosi :cry:



o altrimenti indica nel setup del progetto il link alla libreria.

Non vedo nessuna voce che mi permetta di fare link a librerie, non sto usando visual c++ anche se con visual c++ funzionava regolarmente senza mettere link a libreire, bho! :muro: E comunque se inserisco istruzioni di include di altri file .h compila senza nessun problema, il problema si ha solo con i file di openGL. :(
Comunque grazie ;)

verloc
07-04-2003, 06:56
Devi linkare anche la glut se la usi(che mi sembra non faccia parte della sdk)
e includere glu.h se usi queste utility.
Una passata al sito opengl non farebbe male.

ultio
07-04-2003, 10:25
le glut vanno scaricate a parte, e cmq non vanno sulla borland (almeno non la versione che ho io)

anx721
07-04-2003, 13:28
Devi linkare anche la glut

Cosa intendete di preciso per "linkare"? Non ho mai uasto il C prima d'ora.

Una passata al sito opengl non farebbe male

In tutti i file di esempio presenti sul sito ci sono solo le normali istruzioni di include gl/gl.h, include gl/glut.h, ecc ecc che uso anche io, solo che con me non funzionano, lo stesso programma con visual c++ funzionava, mentre con i compilatori che ho a casa io no.

ultio
07-04-2003, 16:07
ok, allora....
sui compilatori che non siano visual le glut non andranno mai, e anche se usi visual devi prima installare le librerie.
se vuoi te le mando via e-mail, ma devi trovarti visual

verloc
07-04-2003, 16:15
Originally posted by "ultio"

ok, allora....
sui compilatori che non siano visual le glut non andranno mai

Sei sicuro?

Per anx

http://home.clara.net/paulyg/ogl.htm

Leggi queta pagina come L'ave Maria

http://home.clara.net/paulyg/compfree.htm

ultio
07-04-2003, 16:43
su dev c++ non va, sulla borland nemmeno (questi sono quelli che ho provato)
cmq sul sito delle glut visual è nel sistema minimo

verloc
07-04-2003, 17:16
Tu provi su 2 compilatori e deduci che su tutti non funziona.

Non funziona a te,e il pensiero che non hai fatto le cose giuste neanche ti sfiora.

Una occhiatina ai link sopra non farebbe male neanche a te.

ultio
07-04-2003, 17:42
un'occhiatina la ho data, e come vedi ho ragione!

The glut32.lib supplied in precompiled form from SGI only has import libraries for Microsoft compilers. These don't work with Borland, so we have to use a utility to make our own glut32.lib.

quella che ti fanno scaricare dal sito non è una versione ufficiale, in quanto la relase normale ha nelle richieste visual.

quindi le glut ufficiali non funzionano

CVD

leggili anche te i tuoi link

anx721
08-04-2003, 00:02
Ho risolto il problema compilando col comando

bcc32 nomefile glut32.lib

anzicchè

bcc32 nomefile

ed aggiungendo come prima istruzione

#include <windows.h>

che non era necessaria con visual c++.

seguendo un esempio di un programma sul sito di opengl.

Tra la'ltro se l'istruzione #include <windows.h> è messa dopo #include <GL/gl.h> ci sono di nuovo gli errori, è una caratteristica del C questa? Cioè è importante l'ordine delle istruzioni include?

Grazie a tutti, ciao.

ultio
08-04-2003, 06:25
nel codice che ti ho passato c'era windows.h....

verloc
08-04-2003, 08:15
Originally posted by "ultio"

un'occhiatina la ho data, e come vedi ho ragione!

The glut32.lib supplied in precompiled form from SGI only has import libraries for Microsoft compilers. These don't work with Borland, so we have to use a utility to make our own glut32.lib.

quella che ti fanno scaricare dal sito non è una versione ufficiale, in quanto la relase normale ha nelle richieste visual.

quindi le glut ufficiali non funzionano

CVD

leggili anche te i tuoi link

Mi hai sentito parlare di versione ufficiale?
Tu non sapevi dell'esitenza del porting e hai stabilito che non funzionva.

La domanda che ti devi fare è : può funzionare o no?A chi può fregare se usi la versione ufficiale o no?

Dato che non voglio fare polemiche con chi dimostra certezze così granitiche.Chiudo