IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GLUT Discussion :

[OPENGL][GULT][CYGWIN]Compatibilitées en Devcpp et Cygwin


Sujet :

GLUT

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 27
    Par défaut [OPENGL][GULT][CYGWIN]Compatibilitées en Devcpp et Cygwin
    Bonjours,
    Je vous explique rapidement le problème :
    Nous sommes 3, et on est de faire un jeu de ping pong en 3D.
    Pour la partie Graphique, on utilise Opengl, GLUT et SDL pour le son
    Pour la partie physique j'utilise ODE .
    Pour le moment tout marche séparément.
    Quand je dit partie graphique, c'est simplement une table, une raquette, des gradins autour avec un peu de mapping, mais aussi des sous-fenêtres un menu, la gestion du son (écouter des mp3, changer de mp3...)

    Pourquoi avoir fait en 2parties, tout simplement car de mon coté, j'ai essayé de faire la partie physique avec ODE (plusieurs posts sur le forum d'ailleurs ^^), et malheureusement, ça ne marche que sous cygwin (sur le site : Platform: msvc, msvc-dll or cygwin.). Donc de mon coté j'ai mis pas mal de temps, à déjà essayer de l'installer ... On a donc parallélisé le travail, et mes 2 autre équipiers on travaillé sur la partie graphique, sous devcpp.

    Pour le moment ça a toujours bien marché, quand ils avançaient pas mal sur le coté graphique, je prenais ce qu'ils avaient fait et je le rajoutais dans mon prog sous cygwin.
    Mais depuis peu, j'ai essayé et là ça ne marche plus. (depuis qu'ils utilisent les sous-fenêtre et le son=> je ne sait pas du tout si il y a un rapport).

    Ils utilisent Devcpp v.4.9.9.2 avec en option de compilation :
    -lopengl32
    -lglut32
    -lglu32
    -lmingw32
    -lSDLmain
    -lSDL
    -lSDL_mixer
    Sous Devcpp aucun problème, ça marche ça crée bien un exécutable, tout est parfait.
    Par contre quand j'essaie sou cygwin : c'est le drame . J'arrive cependant à compiler, mais le linkage ne marche pas du tout.
    Pour compiler et linker j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    gcc -c PinGl.cpp tgaload.cpp (ou g++)
    gcc -o prog.exe PinGL.o tgaload.o -l glut32 -l glu32 
    -l opengl32  -l sdl -l sdl_mixer -l sdl_main
    Sachant que j'ai aussi essayé un très grand nombre de combinaisons de librairies, j'ai aussi essayé avec -Wall -pedantic en option de compilation et link

    Tout le temps la même erreur :
    /usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../libcygwin.a(libcmain.o).text+0xab) : undefined reference to `_WinMain@16`
    J'ai eu beau faire beaucoup de recherche (notament dans le FAQ ou il y a un cas semblable) mais rien n'y a fait.
    Voici quand même les include utilisées :
    //#include <windows.h> //Headers necessaires
    #include <stdio.h>
    #include <time.h>
    #include <stdlib.h>
    //#include <gl\gl.h>
    //#include <gl\glu.h>
    #include <gl\glaux.h>
    #include <gl\glut.h>
    #include <SDL\SDL.h>
    #include <SDL\SDL_mixer.h>
    #include "tgaload.h"
    Ainsi qu'une partie le main :
    int main ( int argc, char** argv )
    {
    glutInit ( &argc, argv );
    glutInitDisplayMode ( GLUT_DEPTH | GLUT_RGBA | GLUT_DOUBLE );
    glutInitWindowPosition (0,0);
    glutInitWindowSize ( 500, 500 );
    winMain=glutCreateWindow ( "Ping Pong 3D" );
    glutFullScreen ( );
    init ();
    glutDisplayFunc ( display );
    glutReshapeFunc ( reshape );

    glutCreateMenu(selectMenu); //On crée le menu
    glutAddMenuEntry("Revenir au menu",0);
    glutAddMenuEntry("Options",1);
    glutAddMenuEntry("Quitter",2);

    glutKeyboardFunc ( keyboard ); //Gère les touches du clavier
    glutMouseFunc ( souris ); //Gère le clic de la souris
    glutPassiveMotionFunc( depsouris ); //Gère le déplacement de la souris
    glutSpecialFunc ( arrow_keys ); //Gère les flèches du clavier
    glutIdleFunc ( idle ); //Fonction à appeler quand il n'y a rien à faire

    winOption = glutCreateSubWindow (winMain,(int)(rapportx*200),(int)(rapporty*75),(int)(rapportx*880),(int)(rapporty*650)); //On crée la sous fenetre pour le menu Option et Crédits
    init2 ();
    glutSetWindow(winOption);
    glutHideWindow(); //On cache la sous fenetre au départ

    glutDisplayFunc (subDisplay);
    glutReshapeFunc (subReshape);

    if(SDL_Init(SDL_INIT_AUDIO)<0)
    printf("Erreur SDL Init\n");

    glutMainLoop( );

    return 0;
    }
    Désolé si il y a beaucoup d'information, mais je veux être sur d'avoir tout dit, histoire de ne pas passer à coté de quelquechose.

    MERCI beaucoup pour votre aide, et je suis ouvert à toutes suggestions, ou pistes ^^

    Romain

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 27
    Par défaut
    En regardant l'erreur je m'était dit que ça devait surement être un problème au niveau de libcmain ou libcygwin, qui foutrais un peu le bordel, peut-être en créant 2 main, aucune idée ....

    ^^

    Edit : Dernière remarque, j'ai essayé de compiler un link avec mon main (tant qu'à faire ) ça compile mais toujours la même erreur ...

  3. #3
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Sous Windows, il ne faut pas avoir un main mais un WinMain. Il me semble que Cygwin demande la même chose.

    As-tu modifié tes options d'éditions de lien ?

    N'y a-t-il pas une options -lwinmm à ajouter ?

    Jc

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 27
    Par défaut
    Comme tu me l'a conseillé, j'ai ramplacé main par WinMain, toujours la même erreur.
    J'ai ensuite rajouter l'option de link : -lwinmm (option que j'avais déjà essayé), et j'ai toujours la même erreur, rien ne change (et c'est vrai qu'il me semble que sous cygwin il faut rajouté cette option, mais aucun changement.)

    Je continue à chercher ...

    Petite information : voici le main que j'utilise moi (c-à-d pour le fichier oû je teste ma partie physique, avec un peu de OPENGL : table, gradin, sol ...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    int main ( int argc, char** argv )   // Create Main Function For Bringing It All Together
    {
      glutInit            ( &argc, argv ); // Erm Just Write It =)
      glutInitDisplayMode ( GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA ); // Display Mode
      glutInitWindowPosition (0,0);
      glutInitWindowSize  ( 500, 500 ); // If glutFullScreen wasn't called this is the window size
      glutCreateWindow    ( "NeHe Lesson 6- Ported by Rustad" ); // Window Title (argv[0] for current directory as title)
      init ();
      glutFullScreen      ( );          // Put Into Full Screen
      glutDisplayFunc     ( display );  // Matching Earlier Functions To Their Counterparts
      glutReshapeFunc     ( reshape );
      glutKeyboardFunc    ( keyboard );
      glutPassiveMotionFunc( depsouris );   //Gère le déplacement de la souris
      glutSpecialFunc     ( arrow_keys );
      glutIdleFunc			 ( display );
      glutMainLoop        ( );          // Initialize The Main Loop
     
      return 0;
    }
    AU passage, je n'utilise pas WinMain et pourtant ça fonctionne. (mais j'utilise -l winmm ^^ )

  5. #5
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Visiblement, tu as un problème dans l'édition de liens.

    Il faudrait voir si les options de l'édition des liens des deux programmes sont vraiment les mêmes...

    Jc

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 27
    Par défaut
    J'ai essayé de faire le plus proche possible, voici les options de compile de devcpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    -lopengl32
    -lglut32
    -lglu32
    -lmingw32
    -lSDLmain
    -lSDL
    -lSDL_mixer
    et voici les miennes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    -l glut32 -l glu32 
    -l opengl32  -l sdl -l sdl_mixer -l sdl_main -lwinmm
    La différence se joue sur le -lmingw32, que moi je n'est pas à faire sachant que sous cygwin c'est du gcc.
    J'ai aussi essayé de rajouter pour linker sous cygwin :
    -lgdi32 -lstdc++ et -lglui (avec ttes les combinaisons possible, je me suis bien amusé )

    Et malheureusement toujours la même erreur.
    POur moi la seule erreur possible c'est peut-être au niveau de l'option -lmingw32 et donc un problème de compatibilité entre gcc et mingw ???

Discussions similaires

  1. Compatibilité Cygwin et Emacs installé sur windows
    Par fafabzh6 dans le forum Windows
    Réponses: 0
    Dernier message: 30/07/2009, 11h30
  2. Link opengl avec cygwin
    Par zenux dans le forum OpenGL
    Réponses: 6
    Dernier message: 28/05/2008, 21h15
  3. Cygwin - ssh - openGL
    Par Ange44 dans le forum Windows XP
    Réponses: 1
    Dernier message: 29/06/2006, 08h34
  4. [Cygwin et OpenGL] Problème d'affichage
    Par CandS dans le forum Autres langages
    Réponses: 2
    Dernier message: 28/04/2005, 10h31
  5. Utilisation de Cygwin??
    Par don-diego dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 19/07/2002, 14h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo