Au démarrage, Game Develop plante systématiquement si une extension est incompatible avec la version actuelle de la GDL.
Pourtant, dans d’autres cas de figure (par exemple, erreur (26) Module introuvable qui se produit quand il manque une dll d’une extension), Game Develop met l’erreur et continue à fonctionner. De plus, au démarrage suivant (pourquoi seulement à partir du suivant ?), une belle boîte de dialogue nous informe que l’extension est incompatible et nous invite à démarrer GD sans extensions.
Mais quand l’extension n’a pas été compilée pour la version correcte de GD, il plante lamentablement sans rien faire d’autre et ce à chacun de ces démarrages.
Dans le cas que tu cite, l’extension n’est même pas créé en mémoire car le fichier ne peut être ouvert correctement.
Mais si l’extension est correctement créée en mémoire mais que par malheur elle n’est pas compilée pour la bonne version de GD alors :
-Soit GD le voit assez vite quand il fait les tests juste après le chargement de l’extension et décharge celle ci de la mémoire.
-Soit GD/L’extension fait une manipulation incompatible et le programme crashe.
Lors du démarrage, GD créé un petit fichier temporaire qui contient le nom de l’extension actuellement chargée. Si jamais il plante, au prochain démarrage il verra grâce à ce fichier qu’il y a eu un problème.
EDIT : J’ai corrigé le problème qui fait que GD n’affiche pas la boite de dialogue au redémarrage. Par contre, le crash a l’air lié à la destruction en mémoire de l’extension, je pense pas pouvoir y faire grand chose…
Finalement j’ai pu corriger le crash : GD déchargeait l’extension de la mémoire mais comme un pointeur intelligent était créé sur l’extension auparavant, le pointeur intelligent tentait de supprimer la classe qui contenait l’extension et ça faisait tout péter.
J’ai modifié ça pour que le pointeur intelligent qui contient l’extension soit créé uniquement à la fin lorsque GD s’est assuré que tout est correct. Et si ce n’est pas le cas, GD affiche le message d’erreur en question et détruit et décharge, soigneusement cette fois ci, l’extension de la mémoire.
( Il n’en reste que dans le cas où l’extension est créé pour une version de GD où les extensions n’ont pas la même représentation en mémoire, ça va quand même faire tout crasher. Mais c’est déjà une possibilité de crash de supprimée. )