GDL mauvaise version

Bonjour,

J’ai compilé une petite extension utilisant Qt pour faire des boîtes de dialogue un peu plus complexes que celles de l’extension fournie avec GD.
Je la compile avec GNU GCC en debug et debug-edittime. Il y a aucune erreur de compilation. :smiley:
J’ai ensuite copié les deux fichiers compilés dans le répertoire Extensions de GD en prenant soin de copier également les deux dlls nécessaires de Qt (dans le dossier de GD et dans le dossier Extension).

Mais, mon extension n’apparait pas dans la liste des extensions dans GD, même en la renommant en AES par exemple. :frowning:

Edit :
En virant toutes les dépendances de Qt et toutes les instructions qui y sont liées, GD détecte l’extension mais me dis que la Game Develop Library n’est pas de la même version.
En regardant version.h, je me suis rendu compte que la GDL est en version 1.2 alors que j’ai bien la dernière version.

Edit 2:
GDL.dll est une ancienne version de GDL, ce n’est pas la même que celle qui est dans le dossier de GD.

Edit 3:
Si je compile l’extension AES, et que je mets cette extension dans le dossier Extensions de GD, GD refuse de le charger car il utilise une version différente de GDL.

Quatre choses :

1-J’ai oublié de mettre en ligne le SDK de la dernière version, je vais le faire.
2-Pour que ça fonctionne et que GD accepte ton extension, tu dois la compiler en Release - Edittime ( et Release ).
3-Le version.h que tu regarde est un ancien fichier ( que j’ai supprimé pour le prochain SDK, un simple oubli ). Le Version.h que tu doit regarder est celui qui est dans GDL/GDL/Version.h ( là où il y a tous les autres fichiers ). Tu peux vérifier, normalement la version indiquée est la 1.5.9954.
4-Vérifie que tu arrive bien à compiler une extension toute simple et à la lancer avant d’intégrer Qt, comme ça tu sera sur que le problème ne vient pas par exemple de dll manquantes de Qt. Une fois que tu as réussi à recompiler AES en Release Edittime par exemple, et que celle ci fonctionne ( supprime celle qui est actuellement livrée avec GD pour être sûr ), tu pourra alors intégrer Qt.

ok, ben, c’est un peu bizarre, car quand j’include Qt, GD ne charge pas l’extension et n’affiche PAS de message d’erreur.
Alors que sans Qt, il affiche le message d’erreur.

Edit : il manquait une dll, maintenant qu’elle est présente, GD affiche le message d’erreur. :wink:

Dans ce cas, c’est que GD n’a pas du réussir à ouvrir l’extension et ses dépendances tout court ( Sans même parler de vérifier si l’extension est correcte ) : Il doit manquer les dlls de Qt, qui doivent être mises à coté de GDEditor.exe.
Pour savoir quelles dlls tu as besoin, utilise par exemple Dependency Walker : commentcamarche.net/download … ncy-walker ( Tu ouvre le logiciel, tu ouvre le fichier de l’extension avec, tu regarde les dlls qui s’affichent )

EDIT : Ok, donc maintenant le problème est “juste” que le SDK n’est pas à jour.

Questions :

  • Quand une extension a besoin de DLLS, doit-on les mettre dans le dossier Extensions ou dans le dossier de GD ?
  • Dans mon extension, il y a une boîte dialogue “avertissement” standard de Windows généré par Qt, est-ce que l’exécution du jeu sera bloquer ou pas pendant l’affichage de cette boîte de dialogue ?

Dans le dossier de l’executable, donc dans le dossier de GD ( Tu remarquera qu’il y a par exemple les dlls de SFML, de libtheora/libogg/libvorbis pour la vidéo… ).

Si tu affiche cette boite de dialogue à l’aide d’une action, genre :

TonAction(...) { QMessageBox msgBox; //Je connais pas trop Qt, je met juste ça pour exemple. msgBox.setText("Hello."); msgBox.exec(); }

Alors tant que la boite de dialogue sera ouverte, cette boite de dialogue empêchera l’execution de la suite, donc l’execution du jeu sera arrêtée. C’est ce qu’on appelle une boite de dialogue modale, qui arrête l’execution tant qu’elle n’est pas fermée.
Si tu souhaite une boite de dialogue modeless, qui reste ouverte et qui laisse le jeu se dérouler, il faut que tu t’arrange avec Qt pour créer ta fenêtre, l’afficher, puis la garder en mémoire ( Avec un pointeur ( intelligent ) par exemple ). Ensuite, une autre action peut la refermer ( En utilisant le pointeur ( intelligent ) ) ou faire autre chose dessus.

ok, merci de l’information,
j’utilise plutôt une méthode statique de QMessageBox :

QMessageBox::information(NULL, "titre", "texte");

Je compte essayer de faire des boîte dialogue avec des choix (avec des QRadioButton…), des boîtes de dialogues pour taper uniquement des nombres, etc…

Fournir le SDK va être un peu plus long que prévu, vu que j’ai mis à jour SFML, et qu’il semblerait qu’il y ait une incompatibilité avec la version du compilateur utilisé. Je vais donc mettre à jour celui ci pour utiliser Mingw 4.4 ( Version utilisée par Qt d’ailleurs ).

ok, je croyais que Game Develop était compilé avec GNU GCC :confused:

Mingw est un port de Gcc pour Windows. ( Précisement, GD est compilé avec TDM-Gcc, qui est une version récente de Mingw, donc de Gcc. )
Enfin bref, cet histoire de compatibilité est une plaie.

Je vais utiliser la dernière version de TDM-Gcc, ça devrait être bon.

Est-ce que tu arrives à compiler ? :confused:

Je m’arrache les cheveux, je vais revenir à la version de SFML utilisée actuellement par GD.

ah ? pourquoi ? le SDK utilise une autre version de la SFML ? J’avoue ne pas comprendre là… :astonished:

En attendant, j’ai retélécharger la version de GD correspondant à la SDK pour faire des tests.
Et ça marche :smiley:

Pour t’éviter d’utiliser l’ancienne version et comme je n’ai plus moyen de générer le SDK pour la version 1.5.9955, j’ai mis en ligne ce SDK : compilgames.net/code/GameDev … 5996dev.7z

Tu peux donc utiliser le SDK, en compilant les extensions par contre en Development / Development - Edittime, et les mettre dans le répertoire Extensions de la version de développement de GD.

Content que ça fonctionne en tout cas avec la version précédente, c’est bien ce qui devait se passer. :slight_smile:

J’ai mis à jour récemment la version de SFML que j’utilisais, mais j’obtiens maintenant des problèmes au linkage en version Debug, problèmes apparament liés au compilateur. Enfin bref, ça ne se pose pas avec le SDK que j’ai mis en ligne ou les autre.

ok, merci :smiley:

Tu pourras le générer pour les futures versions du SDK ?

Comment ça se fait que tu puisse plus le générer? :open_mouth:

Un problème de MAJ de la SFML je crois. :wink:
Et aussi, comment peut-on savoir si un paramètre optionnel est activé ou pas ? :confused:

Bien sûr, pas d’inquiétude, pas d’inquiétude. :slight_smile:

Quand je dis que je ne peux plus le générer, c’est juste que le SDK actuel n’est plus compatible avec la version 1.5.9955
Comme j’ai fait de petites modifications dans la partie GDL du SDK, le SDK actuel n’est plus compatible avec celui de la version 1.5.9955. ( Je pourrai éventuellement, si il y avait absolument besoin, utiliser le logiciel de gestion de version ( Subversion : fr.wikipedia.org/wiki/Apache_Subversion ) pour retrouver les sources de la version 1.5.9955, et recompiler le SDK pour cette version, mais bon… ).

Bref, j’aurai dû générer le SDK juste après avoir sorti la version 1.5.9955, mais j’ai oublié de le faire à l’époque.
D’où le fait que je vous donne un nouveau SDK + Une version de Game Develop qui est compatible avec.

Un paramètre optionnel non remplit aura simplement sa valeur mise à 0 ou à une chaine de caractère vide.

Je suis débutant en C++ et je dois dire que le SDK de GD est très facile à prendre en main.
J’ai juste eu quelques problèmes quant à l’intégration de Qt, mais le problème est réglé.
[attachment=1]Aperçu1.png[/attachment]
[attachment=0]Aperçu2.png[/attachment]