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

SDL_SEGED Discussion :

Bibliothèque complémentaire à la SDL


Sujet :

SDL_SEGED

  1. #1
    Malikemal
    Invité(e)
    Par défaut Bibliothèque complémentaire à la SDL
    Bonjour à tous,

    Je me suis lancé dans la création d'un module SDL concernant la gestion des erreurs (que je compte aggrandir aux autres modules SDL ainsi que aux fonctions "classiques") mais j'ai un problème ! Je programme avec C::B et quand je crée un projet de bibliothèque statique ( pour que ce soit portable), je n'arrive pas à inclure le header SDL <SDL.h> ! si vous savez comment faire ou qu'il y a un tuto là dessus je vous en serais reconnaissant !!

    Merci par avance,

    PS : Quand j'ai dit que je ferai d'autres lib de gestion d'erreurs, ce n'est justement pas dans la même (eh oui, si quelqu'un utilise la lib de gestion SDL mais qu'il ne possède pas TTF tout bugera ) je tenais à le préciser ^^
      0  0

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 579
    Points
    218 579
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Intéressant projet, il faudra nous montrer.

    Quel est l'erreur retourné par C::B pour ne pas inclure SDL.h ?

    Et puis je ne comprends pas votre choix du statique, mais bon ...
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.
      0  0

  3. #3
    Malikemal
    Invité(e)
    Par défaut
    Alors, l'erreur est "No such file or directory" alors que j'ai bien mis la DLL dans le dossier :S
    Pour la statique, c'était parce que j'ai entendu dire que les DLL n'était utilisable que sur Windows ... Mais faut croire que je me suis trompé quelle est la différence concrète entre les deux ?
    Je suis néanmoins en train d'ecrire la lib dans un Projet SDL (donc ça marche sans problème ) et je pense écrire ... Voila une autre question : les fonctions gérées par la lib seront sous cet forme my_SDL_... or il y a certaines fonctions qui ne retournent rien (SDL_Quit par exemple) est-ce que je laisse l'appel comme il est (donc l'user devra s'informer des fonctions gérées ou pas) ou est-ce que je fais un petit #define my_SDL_... (...) SDL_... (...) pour chaque fonctions non gerée ? Je sais pas si je suis vraiment clair ....

    Merci par avance,

    EDIT : J'ai trouvé la solution ! Je n'avais pas mis tous les headers de la SDL dans le dossier de la lib Mais mes questins sont toujours valables, et je pense que je réécrirais un post dans la partie "projets" sous peu )
    Dernière modification par Malikemal ; 18/04/2011 à 08h59.
      0  0

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 579
    Points
    218 579
    Billets dans le blog
    120
    Par défaut
    Pour l'histoire du statique ... ce n'est pas faux ce que vous dites, sachant que la bibliothèque dynamique est compilé que pour un système d'exploitation (tout comme un programme). Maintenant, la bibliothèque dynamique à tout de même ses avantages :p (Mise à jour facilitée ... programme plus leger ... bibliothèque partagée entre les programme)

    Pour l'autre point, des fonctions sans retour, je n'ai pas compris ce que vous vouliez dire...
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.
      1  0

  5. #5
    Membre extrêmement actif
    Avatar de benjani13
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Février 2010
    Messages
    615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant en sécurité

    Informations forums :
    Inscription : Février 2010
    Messages : 615
    Points : 2 824
    Points
    2 824
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    Pour l'autre point, des fonctions sans retour, je n'ai pas compris ce que vous vouliez dire...
    J'ai cru comprendre qu'il veut faire une surcouche de la SDL pour faciliter la gestion des erreurs, on appellerait donc my_SDL_Init à la place de SDL_Init(my_SDL_Init appellant SDL_Init puis testant les différents codes d'erreur).
    Mais la fonction SDL_Quit ne renvoyant rien, il se demande si il vaut mieux ne pas la réécrire et dire aux utilisateurs de la lib d'utiliser SDL_Quit et non my_SDL_Quit, ou bien tout de même réécrire SDL_Quit pour que la lib soit plus simple à utiliser(on appelleras toutes les fonctions avec le préfixe "my_").
      1  0

  6. #6
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 579
    Points
    218 579
    Billets dans le blog
    120
    Par défaut
    Merci pour l'explication, dommage que vous ne donnez pas votre avis pour autant

    Je pense qu'il faut mieux faire en sorte que ce soit my_SDL_Quit() afin de garder consistance entre tout les appels.
    Apres, comment le faire ... un define n'est peut etre pas une bonne solution, sachant que cela va juste cacher pour l'utilisateur le SDL_Quit() mais pas pour le compilateur (donc, ext ce que le SDL_Quit est appelable directement ou pas ? si oui, il y a peut etre un probleme de conception)
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.
      0  0

  7. #7
    Membre extrêmement actif
    Avatar de benjani13
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Février 2010
    Messages
    615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant en sécurité

    Informations forums :
    Inscription : Février 2010
    Messages : 615
    Points : 2 824
    Points
    2 824
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    Merci pour l'explication, dommage que vous ne donnez pas votre avis pour autant

    Je pense qu'il faut mieux faire en sorte que ce soit my_SDL_Quit() afin de garder consistance entre tout les appels.
    Apres, comment le faire ... un define n'est peut etre pas une bonne solution, sachant que cela va juste cacher pour l'utilisateur le SDL_Quit() mais pas pour le compilateur (donc, ext ce que le SDL_Quit est appelable directement ou pas ? si oui, il y a peut etre un probleme de conception)
    Effectivement je me posais la question sur l'utilisation du define mais je n'étais pas sure. Est-ce qu'il empêche l'utilisation direct de SDL_Quit? Si oui je ne pense pas que ce soit une bonne solution, il vaut mieux laisser le choix à l'utilisateur et donc faire la surcouche de SDL_Quit comme les autres fonctions de la lib:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    my_SDL_Quit()
    {
        SDL_Quit();
    }
      0  0

  8. #8
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 579
    Points
    218 579
    Billets dans le blog
    120
    Par défaut
    Il n'empeche pas l'utilisation de SDL_Quit (le define). Par contre, selon comment la surcouche / bibliotheque est faite, le SDL_Quit peut etre complement cache, afin que l'utilisateur n'utilise pas le SDL_Quit() a la place de notre nouvelle fonction.
    Et dans le cas, d'une couverture totale ... le define n'est pas possible ...

    Enfin c'est comme cela que je le vois.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.
      0  0

  9. #9
    Malikemal
    Invité(e)
    Par défaut
    Merci benjani13 pour cet explication que je n'arrivais pas à sortir ! Je pense que je ne vais pas totalement caché les autres fonctions, je ferais juste des define ou des :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    my_SDL_Quit()
    {
        SDL_Quit();
    }
    Après c'est à voir ... J'ai une autre question (vous en avez marre avouez ) selon vous, est-ce que le programme doit se fermer à CHAQUE problème ? Perso, je pense que oui puisque ça peut entraîner des réactions en chaînes, mais j'attend votre avis
      0  0

  10. #10
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 619
    Points : 188 594
    Points
    188 594
    Par défaut
    Citation Envoyé par Malikemal Voir le message
    J'ai une autre question (vous en avez marre avouez ) selon vous, est-ce que le programme doit se fermer à CHAQUE problème ? Perso, je pense que oui puisque ça peut entraîner des réactions en chaînes, mais j'attend votre avis
    Pas forcément à tout problème qui peut arriver. Exemple : tu veux charger une texture, elle n'est pas disponible sur le disque dur, tu vas proposer au développeur de choisir ce qu'il veut faire : soit tout arrêter, soit la remplacer par une autre. Dans tous les cas, il faut mettre ça dans un fichier log (ou équivalent : on peut vouloir tout stocker dans un fichier XML, tout envoyer par le réseau ou bien mettre dans une base de données, tout dépend du besoin et de la folie du dev qui s'en charge).

    Si ton application ne trouve pas un son, ce n'est pas grave, il suffit de ne pas le jouer, inutile de fermer une application pour si peu. Si, par contre, tu n'arrives pas à allouer des ressources mémoire, là, c'est plus grave, on peut alors envisager de tout fermer. Mais il faut toujours laisser le choix au dev. Tu ne peux pas imaginer tous les cas d'utilisation possibles.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !
      2  0

  11. #11
    Malikemal
    Invité(e)
    Par défaut
    Donc, en reprenant l'exemple de la texture, je devrai par exemple, faire un flag en plus du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     //appel de la fonction
    
    texture = my_LoadBMP ("image.bmp", STOP) /* STOP veut dire que si le fichier n'est pas présent le programme se fermera */
    
    // 2e fonction
    
    image = my_LoadBMP ("xxx.bmp", "trrr.bmp") /* trrr.bmp correspond à l'image à charger si la première est introuvable */
    Les fichier log ou XML, je sais même pas ce que c'est :/ Donc une 'tite explication ou un 'tit article dessus SVP ? Après je tiens à préciser que je prog seulement depuis 1 ans et demi/ 2 ans, je n'ai donc pas beaucoup beaucoup d'expérience en la matière même si j'essaye de me documenter un maximum
      0  0

  12. #12
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 579
    Points
    218 579
    Billets dans le blog
    120
    Par défaut
    même si j'essaye de me documenter un maximum
    Et cela passe par des recherches sur des moteurs de recherche afin de savoir ce qu'un "log" par exemple.

    Ainsi, on pourrait commencer par la traduction du mot anglais -> http://www.wordreference.com/enfr/log
    Sens 2 et 3 ->
    Registe / Journal de bord

    En informatique, un log (souvent un fichier) est un receuil d'information permettant de connaitre ce que fait l'application.
    Ainsi, on enregistrera / affichera par exemple, si un fichier a echoue dans sa lecture.

    Il y a meme des bibliotheques specialises pour cela
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.
      0  0

  13. #13
    Malikemal
    Invité(e)
    Par défaut
    Autant pour moi Bon en tout cas j'écris déja l'erreur qu'il y a eu, ainsi que le lieu (ligne et fichier) dans un flux de sortie stderr ! Après faudra que je voit un peu pour un truc plus poussé si besoin est. En gros dès qu'il y a un problème, sur SDL_Init par exemple, voci ce qu'il affiche dans stderr :

    "Erreur à la ligne xx , du fichier xxx, concernant l'initialisation de(s) modules de la SDL : 'Erreur' "

    EDIT : J'ai réfléchi à ce qu'avait dit dourouc05 :

    Pas forcément à tout problème qui peut arriver. Exemple : tu veux charger une texture, elle n'est pas disponible sur le disque dur, tu vas proposer au développeur de choisir ce qu'il veut faire : soit tout arrêter, soit la remplacer par une autre.
    Et je me suis mis en tête de proposer donc une autre option aux codeurs : je m'explique, ils auront le choix , oit ils n'envoient rien, ils utilisent l'appel classique my_SDL....(entrées) et là, si il y a un problème le programme se ferme, soit il envoie une autre texture (par exemple) et c'est elle qui sera chargée, soit alors ils envoient un SDL_MapRGB qui er la couleur de la dite surface. Mais comment faire ce système ? Avec des fonctions variadiques (comme printf) sous la forme my_SDL_LoadBMP (char *image, ...) mais je ne suis pas très à l'aide avec ces choses là (pour tout dire je n'ai jamais essayé, seulement lu quelques articles sur Wiki et autres) ! Qu'en pensez-vous ?
    Dernière modification par Malikemal ; 18/04/2011 à 16h55.
      0  0

  14. #14
    Malikemal
    Invité(e)
    Par défaut
    Projet abandonné : je me suis rendu compte que je n'avais pas assez de connaissances ni d'expérience pour faire ce genres de choses ... Désole à ceux que ça intéressais ...
    Merci quand pour vos conseils, remarques !
      0  0

  15. #15
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 579
    Points
    218 579
    Billets dans le blog
    120
    Par défaut
    Citation Envoyé par Malikemal Voir le message
    Et je me suis mis en tête de proposer donc une autre option aux codeurs : je m'explique, ils auront le choix , oit ils n'envoient rien, ils utilisent l'appel classique my_SDL....(entrées) et là, si il y a un problème le programme se ferme, soit il envoie une autre texture (par exemple) et c'est elle qui sera chargée, soit alors ils envoient un SDL_MapRGB qui er la couleur de la dite surface. Mais comment faire ce système ? Avec des fonctions variadiques (comme printf) sous la forme my_SDL_LoadBMP (char *image, ...) mais je ne suis pas très à l'aide avec ces choses là (pour tout dire je n'ai jamais essayé, seulement lu quelques articles sur Wiki et autres) ! Qu'en pensez-vous ?
    Je ne suis pas sur d'avoir tout compris, mais je pense que vous devriez garder votre bibliothèque au plus simple.
    Si besoin est, utilisez une couleur prédéfinie (qui peut peut être modifié avec une autre fonction non SDL mais lié à votre bibliothèque).
    Je pense que vous devriez garder le système très simple ... et puis après, si besoin, le complexifié un peu :p

    Citation Envoyé par Malikemal Voir le message
    Projet abandonné : je me suis rendu compte que je n'avais pas assez de connaissances ni d'expérience pour faire ce genres de choses ... Désole à ceux que ça intéressais ...
    Merci quand pour vos conseils, remarques !
    Oh c'est dommage. De plus c'est en étant confronter aux problèmes que l'on apprend le plus. Reculer face aux problèmes ne donnent absolument rien
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.
      0  0

  16. #16
    Malikemal
    Invité(e)
    Par défaut
    Ce que je voulait dire c'est que je me suis rendu compte que je n'avais pas forcément la même approche de la "gestion d'erreur", c'est après un MP que je m'en suis rendu compte, mais tout de même, je vous pose la question (qui sais je pourrais reprendre un 'tit coup de motivation Qu'est ce que la gestion d'erreur selon vous ? Sous quelle forme oit-elle être (message affiché à l'utilistaeur, écrit dans u flux de sortie stderr ...)
      0  0

  17. #17
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 579
    Points
    218 579
    Billets dans le blog
    120
    Par défaut
    Dans les livres ont peu lire qu'il y a au moins trois facons de gerer les errers (je crois qu'il y a en a 5 ... mais bon ...):
    - Un retour de fonction
    - Une exception (Langages orientee objets principalement)
    - On laisse le programme crasher (le systeme va le stopper)
    - On peut aussi gerer silentieusement

    Enfin bref, apres c'est un choix dans l'application. Il n'y pas de solution parfaite.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.
      0  0

  18. #18
    Membre extrêmement actif
    Avatar de benjani13
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Février 2010
    Messages
    615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant en sécurité

    Informations forums :
    Inscription : Février 2010
    Messages : 615
    Points : 2 824
    Points
    2 824
    Par défaut
    Je ne sais pas ce qu'on t'as dit par MP mais je rejoins ce qui a été dit sur l'utilisation d'un log. Tu aurais donc un fichier ou serait recensé toutes les erreurs durant le fonctionnement du programme. Par exemple, si on veut charger une texture mais que celle-ci n'est pas trouvé, tu écris "La texture xxx n'as pas été trouvé" (il ne serait pas nécessaire de fermer le programme). Ainsi, si le programmeur voit qu'une texture ne s'affiche pas, il se reporte au log et voit qu'effectivement la texture n'a pas été trouvé.
      0  0

  19. #19
    Malikemal
    Invité(e)
    Par défaut
    J'aurai bien cherché dans des livres mais je n'en ai pas Mais voici comment je gérais, on va prendre l'exemple de SDL_Init :
    Je crée une fonction my_SDL_Init, dedans je fais SDL_Init, et par rapport au retour, j'écris ou pas dans le flx de sortie stderr, qu'il y a eu une erreur.
    Néanmoins, je pense maintenant agrandir ce concept à un fichier log.txt, ou je mettrais non seulement les erreurs s'ils y en a mais auss tout simplement le déroulement du programme ! (Eh oui, faut croire que seulement le fait de répondre à un post peut remotiver quelqu'un )
    C'est assez simple je l'avoue, mais je pense que c'est déjà une bonne façon de progresser, e après tout peut-être que ca suffira à certain ?

    EDIT : Benjani13, tu as raison, et c'est d'ailleurs ce que je compte faire Mais par exemple, por l'initialisation de la SDL, cmment je peux récupérer les noms de ces modules sans changer le prototype de la fonction de base ? Ou, au pire, en le changeant ?
    Dernière modification par Malikemal ; 19/04/2011 à 11h50.
      0  0

  20. #20
    Membre extrêmement actif
    Avatar de benjani13
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Février 2010
    Messages
    615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant en sécurité

    Informations forums :
    Inscription : Février 2010
    Messages : 615
    Points : 2 824
    Points
    2 824
    Par défaut
    Oui tu pourrais très bien faire cela, tu générerais donc un fichier de ce type la?
    - Initialisation de la SDL
    - Chargement de "abcd.BMP"
    - Chargement de "azerty.BMP" : erreur : "l'image n'existe pas"
    [...]
    - Suppression de la texture abcd
    - Surpression de la texture xxx
    - Déchargement de la SDL.

    (Bien sur n'écris pas les blittage).
      0  0

Discussions similaires

  1. Installer une bibliothèque complémentaire comme Qwt
    Par membreComplexe12 dans le forum Qwt
    Réponses: 4
    Dernier message: 19/04/2013, 15h58
  2. Réponses: 5
    Dernier message: 30/12/2009, 14h50
  3. Chargement de la bibliothèque SDL
    Par CHAUSSADE dans le forum SDL
    Réponses: 1
    Dernier message: 10/09/2007, 15h56
  4. Réponses: 2
    Dernier message: 18/04/2007, 21h32

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