Partage
  • Partager sur Facebook
  • Partager sur Twitter

[SDL2] le release se ferme

Sujet résolu
    22 avril 2023 à 21:37:30

    Bonjour,

    J'ai un souci pas commun, lorsque je lance mon release, l'appli se ferme immédiatement. L'exe est dans le bon dossier, comme je l'ai fait des dizaines de fois.

    Elle fonctionne correctement lancée depuis l'ide. Pas moyen de tracer quoi que ce soit, j'ai mis un message en première ligne du main(), je n'ai rien et ni stdout.txt ni stderr.txt ne sont créés...

    Mon code en blindé en messagerie si quelque chose devait mal se passer, et là rien..

    Je suis un peu sec..

    Merci.

    • Partager sur Facebook
    • Partager sur Twitter

    Bonhomme !! | Jeu de plateforme : Prototype.

      22 avril 2023 à 22:55:38

      Salut,

      SDL contient un parachute, c'est à dire que quand il y a un crash, l'application ne plante pas mais se ferme.

      Tu peux le désactiver dans SDL_Init (voir les options, en tout cas tu avais NOPARACHUTE dans la version 1), et espérer avoir un message d'erreur plus explicite. 

      • Partager sur Facebook
      • Partager sur Twitter

      Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

        22 avril 2023 à 23:07:32

        Bonjour,

        Tu utilises quelle version de la SDL2 ? Si c'est une très récente, cela peut venir d'un bug pas encore connu. Ou alors cela vient d'une mise à jour pas trop stable de Windows ou Unix selon le système d'exploitation que tu utilise qui bug avec ton programme.

        Drx a écrit:

        "Elle fonctionne correctement lancée depuis l'ide. Pas moyen de tracer quoi que ce soit"

        Tu as testé en mode Debug avec le Debugger avec l'option -g depuis que tu as constaté le crash en mode release ?. Il peut y avoir un UB qui survient seulement maintenant.

        • Partager sur Facebook
        • Partager sur Twitter

        Mon site web de jeux SDL2 entre autres : https://www.ant01.fr

          23 avril 2023 à 0:04:49

          Bonsoir,

          Pour l'instant, je suis resté à la 2.0.12, sur la suivante (2.0.14) j'ai eu des soucis avec l'haptic.

          Même résultat avec SDL_INIT_NOPARACHUTE. pas de message, pas de stdout ou stderr alors que la première ligne de mon programme est :

          int main(int argc, char* args[])
          {//main
          
              freopen("stderr.txt", "w", stderr);
              freopen("stdout.txt", "w", stdout);
          
              fprintf(stderr, "In %s at %d\n", __FUNCTION__, __LINE__);
          
              if(TEST_SDL_FUNC)
              {

          Pourtant, j'ai le temps de voir une fenêtre apparaître brievement. Si je n'ai pas le fichier, je pense que ça plante très vite et qu'il n'a peut-être pas le temps de vider le tampon... J'ai également tenté de démarrer en admin (win10), de le coller en liste blanche dans mon anti-virus, pas moyen.

          Non, pas de crash, pas de point d'arrêt avec le debugger (gdb32). je prend grand soin de tout faire tourner assez souvent pour repérer les soucis au fur et à mesure que je code pour ne pas me retrouver submergé par les emmerdes.

          Mon code est propre, le compilo n'a que des warnings de merde en C11 pedantique (genre commentaire dans commentaire, ou que __FUNCTION__ n'est pas très legit)

          Maintenant que tu en parles, mes projets précédents étaient encore en 2.0.7.

          Mes 2 projets basés sur cette versions échouent à démarrer en dehors de tout environnement de developpement. je vais essayer un downgrade pour voir..

          Au pire, je n'utilise pas beaucoup de lib, je vais peut-être les recompiler..

          Une DLL pourrait fonctionner depuis un IDE et pas en "normal" ? Comme je sais que Code::blocks fait les simulations dans un environnement plutôt safe et tolérant, il arrive peut-être à s'accomoder d'un souci avec une lib dynamique ?

          • Partager sur Facebook
          • Partager sur Twitter

          Bonhomme !! | Jeu de plateforme : Prototype.

            23 avril 2023 à 0:58:56

            Rebonsoir,

            Le problème peut effectivement venir de (par exemple): tu as l'archive de la SDL2 dite de développement avec la version 2.0.12 décompressé dans ton dossier des bibliothèques que tu utilises pour la programmation et dans le répertoire de travail ou tu met ton exécutable de post production/release avec les autres données du jeu tu as laissé la DLL de SDL2 de la version 2.0.7 (mais vérifie ce système aussi avec des bibliothèques tierces proches comme la SDL2_image ttf mixer ou net).:)

            • Partager sur Facebook
            • Partager sur Twitter

            Mon site web de jeux SDL2 entre autres : https://www.ant01.fr

              23 avril 2023 à 10:15:15

              Bonjour,

              Trouvé : libpng16-16.dll

              Ce fut compliqué, il y a des dizaines de version, toutes avec des codes différents (MD5).

              En fait, elle est manquante dans le pack 2.6.2 de SDL_image, j'ai probablement du la remplacer par une version moisie.

              Ce n'est pas très grave en soi, c'est plutôt de ne pas avoir eu de messagerie qui m'embête, mais bon.

              Merci pour votre aide.

              • Partager sur Facebook
              • Partager sur Twitter

              Bonhomme !! | Jeu de plateforme : Prototype.

                24 avril 2023 à 10:04:37

                Et du coup, qu'est ce qui plantait ?

                Est ce que c'était dans la lib png que ça plantait sans rien dire ?

                Ou est ce que la fonction de chargement renvoyait NULL et tu ne testais pas la valeur de retour ?

                • Partager sur Facebook
                • Partager sur Twitter

                Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

                  26 avril 2023 à 17:31:23

                  Salut,

                  Comme je travaille quasi-exclusivement avec des png, j'imagine que ça plantait au premier chargement d'image.

                  Aucune chance que je n'ai pas de test de valeur, tous mes appels se font dans ma lib, comme c'est déjà fait depuis un moment, je n'ai rien à oublier.

                  Pour être honnête, je voulais vite avoir un exe qui tourne, je n'ai pas trop cherché quand j'ai eu ce que je voulais, puis j'ai du passer à autre chose. Mais je compte bien résoudre ce mystère quand j'aurai le temps de m'y remettre. Après coup, je me dit qu'il y a peut-être une autre redirection de stderr et stdout quelque part, parce qu'il n'y a vraiment aucune raison que je n'ai pas de messagerie. Et c'est la réponse la plus simple, donc rasoir d'Ockham.

                  La vraie vie m'occupe pour l'instant, mais j'apporterai une réponse quand je la trouverai.

                  Bonne continuation.

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Bonhomme !! | Jeu de plateforme : Prototype.

                    15 mai 2023 à 20:56:57

                    Salut,

                    Pour info, j'ai bien trouvé un reopen plus loin, les logs finissaient en fait dans le dossier user/appdata/roaming de l'appli, j'avais testé ça et j'ai du oublier de le virer.

                    Je me sens un peu con du coup. J'avais bien un défaut de SDL_image me disant qu'il avait un souci avec l'accès à la DLL.

                    ça m'apprendra à perdre mon calme, on arrête de penser clair et pragmatique.

                    • Partager sur Facebook
                    • Partager sur Twitter

                    Bonhomme !! | Jeu de plateforme : Prototype.

                    [SDL2] le release se ferme

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown