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

SFML Discussion :

[SFML] et ruby.h, compilation dificile


Sujet :

SFML

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 29
    Points : 25
    Points
    25
    Par défaut [SFML] et ruby.h, compilation dificile
    Voila,

    Je suis actuellement sur la conception d'une application multimédia interpretant du code ruby pour gérer les affichages et autres, dans une fenêtre. J'avais commencé avec SDL de manière très satisfaisante, cependant le nombre DLL à coller dans le projet devenait assez conséquent. Je me suis donc mis à tester l'API SFML, après quelques tests simple en suivant les tutoriaux, cela me semblait possible de migrer mon projet. Hors voici mon problème; comme à mon habitude, pour tester les compatibilités de divers fichiers inclus, je test une compilation avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include <SFML/System.hpp>
    #include "ruby.h"
     
    int main( int argc, char *argv[] ) {
     
      return 0;
    }
    Rien de trenscendant, cependant voici mon log de compilation :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    -------------- Build: Debug in Ruby_test ---------------
     
    Compiling: main.cpp
    In file included from D:/Program Files/Ruby/lib/ruby/1.8/i386-mswin32/defines.h:183,
                     from D:/Program Files/Ruby/lib/ruby/1.8/i386-mswin32/ruby.h:37,
                     from G:\documents\Tony\dev_c++\Ruby_test\main.cpp:3:
    D:/Program Files/Ruby/lib/ruby/1.8/i386-mswin32/win32/win32.h:172: error: `fd_set' has not been declared
    D:/Program Files/Ruby/lib/ruby/1.8/i386-mswin32/win32/win32.h:172: error: ISO C++ forbids declaration of `parameter' with no type
    D:/Program Files/Ruby/lib/ruby/1.8/i386-mswin32/win32/win32.h:173: error: `fd_set' has not been declared
    D:/Program Files/Ruby/lib/ruby/1.8/i386-mswin32/win32/win32.h:173: error: ISO C++ forbids declaration of `parameter' with no type
    D:/Program Files/Ruby/lib/ruby/1.8/i386-mswin32/win32/win32.h:174: error: `fd_set' has not been declared
    D:/Program Files/Ruby/lib/ruby/1.8/i386-mswin32/win32/win32.h:174: error: ISO C++ forbids declaration of `parameter' with no type
    D:/Program Files/Ruby/lib/ruby/1.8/i386-mswin32/win32/win32.h:175: error: `fd_set' has not been declared
    D:/Program Files/Ruby/lib/ruby/1.8/i386-mswin32/win32/win32.h:175: error: `fd_set' has not been declared
    D:/Program Files/Ruby/lib/ruby/1.8/i386-mswin32/win32/win32.h:175: error: `fd_set' has not been declared
    D:/Program Files/Ruby/lib/ruby/1.8/i386-mswin32/win32/win32.h:175: error: ISO C++ forbids declaration of `parameter' with no type
    D:/Program Files/Ruby/lib/ruby/1.8/i386-mswin32/win32/win32.h:175: error: ISO C++ forbids declaration of `parameter' with no type
    D:/Program Files/Ruby/lib/ruby/1.8/i386-mswin32/win32/win32.h:175: error: ISO C++ forbids declaration of `parameter' with no type
    D:/Program Files/Ruby/lib/ruby/1.8/i386-mswin32/win32/win32.h:179: error: `u_long' has not been declared
    D:/Program Files/Ruby/lib/ruby/1.8/i386-mswin32/win32/win32.h:179: error: ISO C++ forbids declaration of `parameter' with no type
    D:/Program Files/Ruby/lib/ruby/1.8/i386-mswin32/win32/win32.h:188: error: `SOCKET' does not name a type
    In file included from D:/Program Files/Ruby/lib/ruby/1.8/i386-mswin32/ruby.h:718,
                     from G:\documents\Tony\dev_c++\Ruby_test\main.cpp:3:
    D:/Program Files/Ruby/lib/ruby/1.8/i386-mswin32/missing.h:71:1: warning: "isinf" redefined
    In file included from D:/Program Files/Ruby/lib/ruby/1.8/i386-mswin32/win32/win32.h:64,
                     from D:/Program Files/Ruby/lib/ruby/1.8/i386-mswin32/defines.h:183,
                     from D:/Program Files/Ruby/lib/ruby/1.8/i386-mswin32/ruby.h:37,
                     from G:\documents\Tony\dev_c++\Ruby_test\main.cpp:3:
    D:/Program Files/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/math.h:346:1: warning: this is the location of the previous definition
    In file included from D:/Program Files/Ruby/lib/ruby/1.8/i386-mswin32/ruby.h:719,
                     from G:\documents\Tony\dev_c++\Ruby_test\main.cpp:3:
    D:/Program Files/Ruby/lib/ruby/1.8/i386-mswin32/intern.h:216: error: `fd_set' has not been declared
    D:/Program Files/Ruby/lib/ruby/1.8/i386-mswin32/intern.h:216: error: `fd_set' has not been declared
    D:/Program Files/Ruby/lib/ruby/1.8/i386-mswin32/intern.h:216: error: `fd_set' has not been declared
    D:/Program Files/Ruby/lib/ruby/1.8/i386-mswin32/intern.h:216: error: ISO C++ forbids declaration of `parameter' with no type
    D:/Program Files/Ruby/lib/ruby/1.8/i386-mswin32/intern.h:216: error: ISO C++ forbids declaration of `parameter' with no type
    D:/Program Files/Ruby/lib/ruby/1.8/i386-mswin32/intern.h:216: error: ISO C++ forbids declaration of `parameter' with no type
    Process terminated with status 1 (0 minutes, 0 seconds)
    21 errors, 2 warnings
    et le log, en inversant les 2 fichiers inclus :

    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
     
    -------------- Build: Debug in Ruby_test ---------------
     
    Compiling: main.cpp
    In file included from D:/Program Files/Ruby/lib/ruby/1.8/i386-mswin32/ruby.h:718,
                     from G:\documents\Tony\dev_c++\Ruby_test\main.cpp:1:
    D:/Program Files/Ruby/lib/ruby/1.8/i386-mswin32/missing.h:71:1: warning: "isinf" redefined
    In file included from D:/Program Files/Ruby/lib/ruby/1.8/i386-mswin32/win32/win32.h:64,
                     from D:/Program Files/Ruby/lib/ruby/1.8/i386-mswin32/defines.h:183,
                     from D:/Program Files/Ruby/lib/ruby/1.8/i386-mswin32/ruby.h:37,
                     from G:\documents\Tony\dev_c++\Ruby_test\main.cpp:1:
    D:/Program Files/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/math.h:346:1: warning: this is the location of the previous definition
    In file included from D:/Program Files/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/SFML/System.hpp:37,
                     from G:\documents\Tony\dev_c++\Ruby_test\main.cpp:2:
    D:/Program Files/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/SFML/System/Sleep.hpp:42: error: expected unqualified-id before "void"
    D:/Program Files/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/SFML/System/Sleep.hpp:42: error: expected `)' before "void"
    Process terminated with status 1 (0 minutes, 0 seconds)
    2 errors, 2 warnings
    Je précise que tous mes chemins vers les fichiers nécessaires et mes liens sur les librairies sont correctes.

    Si quelqu'un à une idée, je suis preneur, car pour le moment, si la SFML est déjà incompatible avec l'interpreteur Ruby, je ne prendrais pas le risque de migrer tous mes autres projets de moteur graphique sur cette API.

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Et si tu n'inclues pas ruby.h, tout fonctionne bien ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 29
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par Laurent Gomila Voir le message
    Et si tu n'inclues pas ruby.h, tout fonctionne bien ?
    Ouaip, les deux fichiers inclus ne produisent pas d'erreur de compilation lorsqu'ils sont seuls, sans modifier le paramètrage du projet. Il est donc probable qu'un 'define' est le même nom dans les librairies impactés, et que du coup un bloc 'ifndef' ne soit pas interprété dans l'un ou l'autre cas. Cela me semble être une possibilité, mais je dois avouer que le nombre de fichier impacté dans chacun des 2 cas est assez conséquent. Si il y'avait une autre piste possible en fonction des logs, se serait un petit plus.

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Ok je vais faire divers tests chez moi, merci de ton aide.

    Je te tiens au courant si je trouve quelque chose.

  5. #5
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Dans defines.h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #define Sleep(msec) (void)rb_w32_sleep(msec)
    Ca m'énèrve ces bibliothèques qui se croient seules au monde...

    Tu peux faire un #undef Sleep juste après avoir inclus ruby.h, mais honêtement après avoir vu ce qui se trouvait dans ces en-têtes, je ne te garantis pas que cela va fonctionner (il y a des #define pour remplacer toutes les fonctions standards des sockets).

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 29
    Points : 25
    Points
    25
    Par défaut
    Ohh la vache, je savais la bibliothèque Ruby.h dobée du cul, mais à ce point là, je ne l'aurais pas cru.

    Je tenterais ce soir de faire les undef nécessaires, et de faire l'inventaire de leurs utilisations dans mon code. J'en doute, mais si ça se trouve, les instabilités que j'avais pus constater sur mes tests SDL, pourraient peut être se trouver dans ces redéfinitions abusives.

    Merci pour ton coup d'oeil aguéri!!

  7. #7
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Si tu as encore des soucis tu peux également jeter un oeil à RubySFML (sources téléchargeables sur le site de SFML), il utilise ruby.h sans aucun problème de compilation.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 29
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par Laurent Gomila Voir le message
    Si tu as encore des soucis tu peux également jeter un oeil à RubySFML (sources téléchargeables sur le site de SFML), il utilise ruby.h sans aucun problème de compilation.
    J'y ai bien pensé, mais le but de mon application et de pouvoir ajouter des classes C++ instanciables via l'interpreteur Ruby en C++. Me permettant ainsi de pouvoir rajouter des fonctionnalités sans problème tout en profitant de la vitesse d'un code compilé en interprétant un script Ruby.

    Edit : J'avais mal compris le sens de ta phrase, effectivement je vais jeter un coup d'oeil dans le code de RubySFML.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 29
    Points : 25
    Points
    25
    Par défaut
    Bon, nickel, pour le moment supprimant les define qui poser problème à la fin de Ruby.h, tout se pas bien, je vais donc pouvoir commencer à migrer tout ça.

    Merci bien, ton API simplifie grandement le développement, je reviendrais certainement vers toi, quant j'aurais à migrer mon moteur 3D.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/02/2011, 12h35
  2. Impossible de compiler sqlite3-ruby
    Par Matthieu Brucher dans le forum Ruby
    Réponses: 3
    Dernier message: 15/01/2010, 08h04
  3. Compiler une extension ruby en C
    Par _Pipo_ dans le forum Ruby
    Réponses: 1
    Dernier message: 10/01/2008, 20h53
  4. [SFML] Compilation avec VC express sur Vista
    Par tomu dans le forum SFML
    Réponses: 5
    Dernier message: 01/09/2007, 09h18
  5. [Apache] compiler le module pour Ruby mod_ruby.so ?
    Par Mescalito dans le forum Apache
    Réponses: 1
    Dernier message: 02/11/2005, 18h28

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