Compilation de source C+OpenGL sous Windows

Compilation de source C+OpenGL sous Windows - C - Programmation

Marsh Posté le 11-10-2004 à 20:45:34    

Bonjour,
Je souhaites compiler du codes comportant de l'openGL sous windows afin de bosser mes TP chez moi. Ces TP sont fait sous linux, mais sur mon pc, j'ai pas (encore) ce qu'il me faut pour rester sous linux (du son (ok ca a rien a voir avec de la prog, mais un pc sans son, ca me lourde :) ))
 
Donc je voudrais compiler mon appli sous windows (a priori le projet ne contient pas de code exotique a linux et ca devrait se compiler n'importe où).
J'ai essayer Devcpp, mais c'est bien lourd d'utilisation (les projets a creer sinon on peut pas passer de parametre etc o_O) et encore, c'était loin d'etre parfait, puisque je ne parvenais pas a recompiler mon code.
 
Je pense qu'il me manque carément des bibliotheques/librairies OpengL sous windows.
 
Quels outils puis-je utiliser (si possible qui prendrait directement en compte le makefile (ou alors je le modifie un peu pour win, mais un pseudo-makefile qd meme) ?
merci bien :=)
 
(ha oui, pas de truc payant si possible (Visual C ou j'sais pas quoi, j'ai pas ^^ )

Reply

Marsh Posté le 11-10-2004 à 20:45:34   

Reply

Marsh Posté le 11-10-2004 à 20:49:46    

Le mieux c'est que tu te connecte via telnet sur le serveur linux de ton école.

Reply

Marsh Posté le 11-10-2004 à 20:51:54    

mmm, je ne pourrais que bosser le code et le compiler ?
Je doute que je puisse ensuite executer le programme sur mon pc sous windows ^^

Reply

Marsh Posté le 11-10-2004 à 20:52:04    

bon ben devcpp ca va (tu as aussi mingw et cygwin)
 
perso j'utilise gcc en ligne de commande, et pour ton makefile no probleme, make est inclus
 
pour opengl, c'est deja inclus dans devcpp
si tu utilise glut pour le fenetrage telecharge le pack pour windows


Message édité par cris56 le 11-10-2004 à 20:52:47
Reply

Marsh Posté le 11-10-2004 à 20:53:23    

De l'OpenGl ? En Telnet ? Ouille.
 
Plus sérieusement, dev-cpp est l'un des meilleurs choix.  
 
Tu peux également simplement installer l'environnement cygwin, installer les outils de dév, et ça sera comme sous linux, avec make, gcc, etc.
 
Après, je recommanderais Visual Studio, mais c'est payant, c'est un peu complexe de s'y mettre, et c'est hors sujet ici.
 
edit: Cris56 m'a griller. (sic).
 


Message édité par Lam's le 11-10-2004 à 20:54:19
Reply

Marsh Posté le 11-10-2004 à 20:56:52    

j'ai même lancé le netscape de mon école avec ça :
http://www.labf.com/download/winaxe.html

Reply

Marsh Posté le 11-10-2004 à 20:59:57    

j'ai installé cygwin ya qq jours, mais ya pas gcc :x (je dois l'installer moi même ? o_O )
 
"gcc en ligne de commande" sous windows ca me plairait bien en fait, j'vais chercher un coup sur le site de gcc, mais il renvoyer sur cygwin :x
 
Vais voir un peu du coté de mingw
 
 
edit => j'ai installé Winaxe tout a l'heure, j'ai rien compris o_O
(en même temps j'ai lu aucune doc, shame on me !  :o )


Message édité par c0wb0y le 11-10-2004 à 21:01:04
Reply

Marsh Posté le 11-10-2004 à 21:04:23    

c0wb0y > pour gcc, devcpp suffit (c'est un edi qui utilise gcc), va voir dasn bin/ ya tout ce qu'il faut

Reply

Marsh Posté le 11-10-2004 à 21:06:49    

Démarrer, Programmes, WinaXe, cliquez sur "XSession".
Une fenêtre "XSession" dans la barre des tâches ou un "X" à côté de l'heure. C'est bon signe.
Il s'agit du serveur X qui fournit à d'autres applications des fonctions d'affichages de fenêtres.
Lancer "Telnet_SSH" dans le menu Démarrer, Programmes, WinaXe.
Interface : Telnet
Host      : ServeurDeMonEcole
Port      : 23
 
Si dans le titre de la fenêtre Telnet, le mot entre chevron n'est pas <xterm>, alors faites ce qui suit.
Dans le menu Options, Settings, dans l'onglet Type, choisissez "XTERM" pour "Terminal Type"
Ensuite tapez : xterm -display VotreAdresseIP:0.0 &
VotreAdresseIP peut être connue grâce à la commande ipconfig lancée dans une session MS-DOS.
L'adresse IP est de la forme xxx.xxx.xxx.xxx
Si un message d'erreur apparaît, mieux vaut fermer votre "XSession" en cliquant droit sur l'icône de la barre des tâches et relancer "XSession", puis "Telnet_SSH" comme indiqué plus haut.

Reply

Marsh Posté le 11-10-2004 à 21:09:42    

pains-aux-raisins => merci beaucoup, je garde ta solution, je teste ca demain (faut que je recupere l'ip du serveur de l'iut) :)
(mais il faudrait qd meme une methode "offline" )
Je vais desinstaller devcpp et le reinstaller sans changer de repertoire de destination, il a l'air de bouder mon D:\programmation :/

Reply

Marsh Posté le 11-10-2004 à 21:09:42   

Reply

Marsh Posté le 11-10-2004 à 21:19:25    

cowboy: oui, il faut sélectionner toi-même gcc et dev-utils dans le programme "setup" de cygwin (le programme d'install qu'on download du site cygwin).

Reply

Marsh Posté le 11-10-2004 à 22:19:31    

Citation :


adsl@adslbox ~/formats
$ make
gcc -I /usr/X11R6/include -g  -c formats.c
gcc -I /usr/X11R6/include -g  -c menu.c
gcc -I /usr/X11R6/include -g  -c io.c
gcc -I /usr/X11R6/include -g  -c graphique.c
gcc -I /usr/X11R6/include -g  -c chooser.c
chooser.c:6:21: sys/dir.h: No such file or directory
chooser.c: In function `lire_repertoire':
chooser.c:198: error: `DIR' undeclared (first use in this function)
chooser.c:198: error: (Each undeclared identifier is reported only once
chooser.c:198: error: for each function it appears in.)
chooser.c:198: error: `rep' undeclared (first use in this function)
chooser.c:218: warning: assignment makes pointer from integer without a cast
chooser.c:220: error: dereferencing pointer to incomplete type
chooser.c:221: error: dereferencing pointer to incomplete type
chooser.c:227: error: dereferencing pointer to incomplete type
chooser.c:235: error: dereferencing pointer to incomplete type
make: *** [chooser.o] Error 1


 
 :cry:  
 
Ca sera plus simple de configurer linux je crois -_- (quoi que...)
 
Il me manque glu32 pour utiliser gcc (enfin le compilo inclu par devcpp) =/(
(j'ai la dll sur le dur, mais on dirait que les librairies ne sont pas prise par le compilo par contre)

Reply

Marsh Posté le 11-10-2004 à 22:22:45    

tu te fais une partition linux et l'affaire est pliée :o

Reply

Marsh Posté le 11-10-2004 à 22:23:49    

c0wb0y a écrit :

Citation :


adsl@adslbox ~/formats
$ make
gcc -I /usr/X11R6/include -g  -c formats.c
gcc -I /usr/X11R6/include -g  -c menu.c
gcc -I /usr/X11R6/include -g  -c io.c
gcc -I /usr/X11R6/include -g  -c graphique.c
gcc -I /usr/X11R6/include -g  -c chooser.c
chooser.c:6:21: sys/dir.h: No such file or directory
chooser.c: In function `lire_repertoire':
chooser.c:198: error: `DIR' undeclared (first use in this function)
chooser.c:198: error: (Each undeclared identifier is reported only once
chooser.c:198: error: for each function it appears in.)
chooser.c:198: error: `rep' undeclared (first use in this function)
chooser.c:218: warning: assignment makes pointer from integer without a cast
chooser.c:220: error: dereferencing pointer to incomplete type
chooser.c:221: error: dereferencing pointer to incomplete type
chooser.c:227: error: dereferencing pointer to incomplete type
chooser.c:235: error: dereferencing pointer to incomplete type
make: *** [chooser.o] Error 1


 
 :cry:  
 
Ca sera plus simple de configurer linux je crois -_- (quoi que...)
 
Il me manque glu32 pour utiliser gcc (enfin le compilo inclu par devcpp) =/(
(j'ai la dll sur le dur, mais on dirait que les librairies ne sont pas prise par le compilo par contre)


 
non  glu32 y est, c'est sur !!!
 
et c'est quoi ces lib, c'est quoi les fichiers ? tu utilises quelle bibliotheque pour le fenetrage ?


Message édité par cris56 le 11-10-2004 à 22:24:24
Reply

Marsh Posté le 11-10-2004 à 22:27:00    

Il manque un petit #include <dirent.h> dans ton chooser.c, non ?

Reply

Marsh Posté le 11-10-2004 à 22:37:44    

Citation :


...
chooser.c:6:21: sys/dir.h: No such file or directory
chooser.c:7:24: sys/dirent.h: No such file or directory
chooser.c:12:21: GL/glx.h: No such file or directory
...


 
:-/
 
(developper sous windows => suicide)

Reply

Marsh Posté le 11-10-2004 à 22:39:12    

ça me rappelle de vieux problèmes... il n'y a pas une histoire de path pour les includes où un truc dans le genre ?

Reply

Marsh Posté le 11-10-2004 à 22:39:21    

XD
c'etait pas dans include/sys
 
peuvent pas mettre leur librairie au même endroit dans tout les compilos ? ca simplifierai al vie de tout le monde  :o
 
 
(ha oui,ca compile pas pour l'erreur d'au dessus, je cherche glx maintenant)


Message édité par c0wb0y le 11-10-2004 à 22:40:01
Reply

Marsh Posté le 11-10-2004 à 22:41:40    

Nan, c'est la norme Posix qui dit où ça se trouve. Et certains programmes n'en tiennent pas compte. (Surtout ceux écrits dans les années 70 par des mecs avec des mullets et des moustaches d'acteurs de pornos).  
 
Donc dégage le sys/dir.h, et remplace sys/dirent.h par dirent.h

Reply

Marsh Posté le 11-10-2004 à 22:55:02    

C'est fait, mais il reconnait pas le type DIR =/ Etant donné que c'est déclaré dans dirent.h (par contre la bibliotheque <dir.h> sert a rien, elle est vide (du blabla en en tete pour dire que c'est obsolete et que c'est la pour la compatibilité)
Dans dirent le type DIR est bien definie par un typedef struct {...} DIR;
 
Bienvenue dans le monde merveilleur des applications portables ?

Reply

Marsh Posté le 11-10-2004 à 22:57:31    

Qu'est-ce qui merde exactement ?

Reply

Marsh Posté le 11-10-2004 à 23:09:28    

(changement de post, j'ai dit n'importequoi ^^" )
 

Citation :

C:\DOCUME~1\adsl\MESDOC~1\formats>make
gcc -I /usr/X11R6/include -g  -c chooser.c
chooser.c: In function `lire_repertoire':
chooser.c:218: warning: assignment from incompatible pointer type
chooser.c:220: error: dereferencing pointer to incomplete type
chooser.c:221: error: dereferencing pointer to incomplete type
chooser.c:227: error: dereferencing pointer to incomplete type
chooser.c:235: error: dereferencing pointer to incomplete type
make: *** [chooser.o] Error 1


 
je vous poste le bout de code correspondant :
 

Code :
  1. static int lire_repertoire(char *nom)
  2. {
  3.   dir *rep;
  4.   struct direct *entree;
  5.   struct stat buf_stat;
  6.   char type;
  7.   ptr_entree_rep er, fin_er;
  8.   char *acces;
  9.   int taille_acces=256;
  10.  
  11.   /* ouverture du repertoire */
  12. printf("nom entree lire_rep : %s\n", nom);
  13.   if((rep = opendir(nom))==NULL){
  14.     return (-1);
  15.   }
  16.   acces = (char *)malloc(taille_acces*sizeof(char));
  17.   printf("add acces = %x\n", access);
  18.   /* lecture de chaque entree du repertoire */
  19.   /* et construction de la liste a afficher */
  20.   while((entree = readdir(rep))!=NULL){
  21.     if(strcmp(".", entree->d_name)==0) continue;
  22.     while (taille_acces < strlen(nom) + strlen(entree->d_name) + 2){
  23.       free(acces);
  24.       taille_acces *= 2;
  25.       acces = (char *)malloc(taille_acces*sizeof(char));
  26.     }
  27.     strcpy(acces, nom); strcat(acces, "/" ); strcat(acces,entree->d_name);
  28.     stat(acces, &buf_stat);
  29.      
  30.     if(S_ISDIR(buf_stat.st_mode)) type=REP;
  31.     else
  32.       if(S_ISREG(buf_stat.st_mode)) type=FIC;
  33.       else continue;
  34.            
  35.     er = new_entree_rep(entree->d_name, type);
  36.    
  37.     if(tete_er==NULL){
  38.             tete_er = fin_er = er;
  39.     }
  40.     else{
  41.       fin_er->suiv = er;
  42.       er->prec = fin_er;
  43.       fin_er = er;
  44.     }
  45.   }


 
edit (le dernier de ce post promis (: )
> Cette source fonctionne tres bien lorsque c'est compilé sous linux


Message édité par c0wb0y le 11-10-2004 à 23:13:13
Reply

Marsh Posté le 11-10-2004 à 23:12:41    

montre ton arbo et la tronche de ton make :D

Reply

Marsh Posté le 11-10-2004 à 23:14:50    

Citation :

11/10/2004  23:07    <REP>          .
11/10/2004  23:07    <REP>          ..
11/10/2004  23:07            18.904 chooser.c
20/01/1998  11:33               223 chooser.h
05/10/2004  09:25           261.807 formats
14/09/2004  06:36               999 formats.c
04/10/2004  13:04               984 formats.h
11/10/2004  22:33             5.173 formats.o
14/09/2004  06:37             1.018 graphique.c
11/10/2004  22:33             5.046 graphique.o
08/10/2004  20:56    <REP>          Image
04/10/2004  13:05             3.208 io.c
16/12/1997  14:05                54 io.h
11/10/2004  22:33             9.022 io.o
11/10/2004  22:12             1.250 Makefile
04/10/2004  13:54             1.850 menu.c
11/10/2004  22:33             6.091 menu.o
05/10/2004  09:25             5.741 perte.c
05/10/2004  08:28               122 perte.h
05/10/2004  06:32             8.002 pertebloc.c
11/10/2004  21:44            23.042 ppm.c
28/09/2004  08:42               580 ppm.h
05/10/2004  09:26               916 save.c
05/10/2004  07:39               275 types.h
              21 fichier(s)          354.307 octets
               3 Rép(s)   1.847.291.904 octets libres


 
 

Citation :

# SGI
#---------------------------------------------------------------------
#INCLUDE= -I /opt/GLUT/GL -I /opt/OpenGL/libaux $(COMMONRULES) -wlint,-fvihua
#LIB= -L /opt/GLUT/lib/glut -lglut -lGLU -lGL -lXmu -lXext -lX11 -lm
#CC=cc
#OPT= -g  
 
# SGI O2
#---------------------------------------------------------------------
#INCLUDE= -I /usr/include/GL  -fullwarn -w2
#LIB=  -lglut -lGLU -lGL -lXmu -lXext -lX11 -lm
#CC=cc
#OPT= -g  
 
# LINUX
#---------------------------------------------------------------------
INCLUDE= -I /usr/X11R6/include
LIB= -L /usr/X11R6/lib  -lglut -lGLU -lGL\
     -lXmu -lXt -lSM -lICE  -lXext -lX11 -lXi  -lz -lm   -Wl,-rpath,/usr/X11R6/lib  
CC=gcc
OPT= -g  
 
formats:  formats.o menu.o io.o graphique.o chooser.o ppm.o perte.o
 $(CC) $(OPT) -o formats  formats.o menu.o io.o graphique.o chooser.o ppm.o perte.o  $(LIB)
 
formats.o: formats.c
 $(CC) $(INCLUDE) $(OPT) -c formats.c
 
io.o: io.c
 $(CC) $(INCLUDE) $(OPT) -c io.c
 
chooser.o: chooser.c
 $(CC) $(INCLUDE) $(OPT) -c chooser.c
 
menu.o: menu.c
 $(CC) $(INCLUDE) $(OPT) -c menu.c
 
graphique.o: graphique.c
 $(CC) $(INCLUDE) $(OPT) -c graphique.c
 
ppm.o: ppm.c
 $(CC) $(INCLUDE) $(OPT) -c ppm.c
 
perte.o: perte.c
 $(CC) $(INCLUDE) $(OPT) -c perte.c
clean:
 -rm -f *.o

Reply

Marsh Posté le 11-10-2004 à 23:15:08    

Nan. Remplace "dir * rep" par "DIR * rep;", et redonne le résultat.

Reply

Marsh Posté le 11-10-2004 à 23:16:23    

c'est fait :)
(copier coller avant la modif ^^" )
 
 
(le resultat est posté précédement (post édité, tu avais peut etre lu avant que je change le contenu du message  :jap: )


Message édité par c0wb0y le 11-10-2004 à 23:17:03
Reply

Marsh Posté le 11-10-2004 à 23:18:37    

hum, faudra pas trop me poser de question la dessus, je comprends pas trop cette portion du programme :/
(on vient a peine d'attaquer la programmation systeme avec cette histoire de DIR et stat :-/ )
(donc ca ca été codé par le prof)

Reply

Marsh Posté le 11-10-2004 à 23:23:59    

Putain, je regarde trop la télé moi (j'aime bien la pub playtex d'ailleurs).
 
Sinon, remplace ton "struct direct entree" par "struct dirent entree", et recrache le résultat :-)

Reply

Marsh Posté le 11-10-2004 à 23:30:34    

Citation :

C:\DOCUME~1\adsl\MESDOC~1\formats>make
gcc -I /usr/X11R6/include -g  -c chooser.c
gcc -I /usr/X11R6/include -g  -c ppm.c
gcc -I /usr/X11R6/include -g  -c perte.c
gcc -g  -o formats  formats.o menu.o io.o graphique.o chooser.o ppm.o perte.o  -L /usr/X11R6/lib  -lglut -lGLU -lGL -lXmu -lXt -lSM -lICE  -lXext -lX11 -lXi  -lz -lm   -Wl,-rpath,/usr/X11R6/lib
C:\Dev-Cpp\bin\..\lib\gcc-lib\mingw32\3.3.1\..\..\..\..\mingw32\bin\ld.exe: cannot find -lGLU
make: *** [formats] Error 1


 
Et la, c'est la catastrophe car j'ai beau chercher, je trouve ni GLU ni GLX ...
je n'ai que les dll, pas de librairie =/
 
 
edit : sinon, c'est quoi al difference entre direct et dirent ? une norme ?


Message édité par c0wb0y le 11-10-2004 à 23:31:21
Reply

Marsh Posté le 11-10-2004 à 23:37:11    

Bah nan, direct/dirent c'était une erreur d'orthographe.  
 
Pour ce qui est de glu, glx, etc. je te laisse regarder sur le forum (pense à regarder dans la section C++ aussi), ou sur le web.  
 
Et sur ce, je souhaite une bonne nuit. :)

Reply

Marsh Posté le 11-10-2004 à 23:43:35    

merci pour ton aide, je vais me coucher aussi :)
je rééssayerai tout ca demain apres midi :|

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed