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 Discussion :

Inclure des images directement dans l'éxecutable


Sujet :

SDL

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 433
    Points : 240
    Points
    240
    Par défaut Inclure des images directement dans l'éxecutable
    Bonjour,

    Je viens de terminer un projet en SDL. Ce projet utilise des ressources tel que des fonts, des images bitmap, ect. Lorsque je distribue mon éxecutable sous Windows, je suis contraint à donner toutes ces ressources en externe, c'est a dire que j'accompagne mon éxecutable des ressources ordonées dans la bonne arborescence.

    Je voudrais savoir comment inclure les images et les fonts dans mon éxecutable directement histoire de n'avoir au final qu'a distribuer un et un seul fichier.

    J'ai trouvé un début de réponse, dans le fichier ressource.rc mais je ne suis pas arrivé à mes fins. J'utilise dans mon programme IMG_Load() de SDL qui prends en argument le chemin relatif vers le fichier image, et je ne voie pas comment substituer cela par une ressource interne.

    D'avance merci.

    PS: même question pour les 3 .dll que je dois donner avec !
    Il s'agit de SDL.dll, SDL_image.dll et SDL_ttf.dll)

  2. #2
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    - On voit souvent cette question sur les forums. Je déconseille cette pratique. Premièrement elle n'ajoute rien au programme. Elle rend la portabilité difficile et les modifications du programme aussi.

    Pour les .dll, je n'ai aucune idée et je doute que ce soit faisable à part faire ce que font certains programmes : générer les .dll au démarrage (extraction par exemple) et les utiliser par la suite et effacer à la fin.

    Mais c'est idiot et cela allourdit le programme. Les répertoires sont fait pour mettre tous les fichiers en rapport avec ton projet à l'intérieur. Mets tout dedans, créer un installeur et tu auras un seul .exe à envoyer. L'utilisateur le lance et cela mettra tous les fichiers en place au bon endroit.

    - Si jamais tu ne veux pas que tes ressources soient disponibles, mets tout dans une archive et crypte l'archive ou juste l'entête. Ensuite tu charges en mémoire la partie qui t'intéresse et tu utilise le groupe de fonctions SDL_RWops et IMG_Load_RW pour te donner des surfaces à partir d'une zone mémoire.

    Jc

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 433
    Points : 240
    Points
    240
    Par défaut
    Oui je sais qu'avec un installateur le problème serait simplement résolu, mais je ne veux pas que les ressources soient disponible comme tu l'as dit à la fin de ton post. En modifiant les images à leur places respectives, l'éxecutable qui va chercher les images dans les dossiers est en conséquence modifié: c'est l'effet indésiré.

    Si jamais tu ne veux pas que tes ressources soient disponibles, mets tout dans une archive et crypte l'archive ou juste l'entête. Ensuite tu charges en mémoire la partie qui t'intéresse et tu utilise le groupe de fonctions SDL_RWops et IMG_Load_RW pour te donner des surfaces à partir d'une zone mémoire.
    Je vais chercher dans cette direction.
    Si jamais j'ai des problèmes, je reviendrais poster.

    Merci pour tes réponses


    EDIT: J'ai recherché à travers Google pour utiliser SDL_RWops mais je ne suis tombé QUE sur des forums où des gens avait le même problème que moi... et les réponses étaient toute les même, mais pas moyen de trouver un cours ou tuto sur l'utilisation de SDL_RWops. Si vous avez ca sous la main, je prendrais volontié !

  4. #4
    Membre habitué Avatar de razmott
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 133
    Points : 142
    Points
    142
    Par défaut
    Salut !

    Si je tape SDL_RWops dans Google, j'obtiens :

    http://kekkai.org/roger/sdl/rwops/rwops.html
    http://www.libsdl.org/cgi/docwiki.cgi/SDL_5fRWops

    et si tu préfères le français, il y a même un tutoriel sur ce que tu veux faire :
    http://www.xgarreau.org/aide/devel/sdl/rwops.php

    Et tout ça c'est dans la première page de recherche !
    Tu as vraiment cherché ?



    Bon @+
    Mieux vaut prévoir que patcher.

  5. #5
    Membre actif Avatar de ironzorg
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 288
    Points : 245
    Points
    245
    Par défaut
    - On voit souvent cette question sur les forums. Je déconseille cette pratique. Premièrement elle n'ajoute rien au programme. Elle rend la portabilité difficile et les modifications du programme aussi.
    Mouais... Pas terrible au niveau de la portabilité ton truc là ... Franchement la solution de fearyourself ( SDL_RWops ) pourrais sembler la meilleure dans ton cas ...

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 433
    Points : 240
    Points
    240
    Par défaut
    Citation Envoyé par razmott
    Salut !

    Si je tape SDL_RWops dans Google, j'obtiens :

    http://kekkai.org/roger/sdl/rwops/rwops.html
    http://www.libsdl.org/cgi/docwiki.cgi/SDL_5fRWops

    et si tu préfères le français, il y a même un tutoriel sur ce que tu veux faire :
    http://www.xgarreau.org/aide/devel/sdl/rwops.php

    Et tout ça c'est dans la première page de recherche !
    Tu as vraiment cherché ?



    Bon @+
    Je suis tombé sur le premier lien, mais j'avoue ne pas avoir compris le contenu... pourtant j'ai déjà lu des cours et tuto en anglais et d'habitude ca passe mais là j'ai du mal.

    Et le tuto de "xgarraud" alors là c'est encore pire je capte rien du tout.
    De plus j'ai quelques notions d'UNIX mais je comprends déjà pas pourquoi on en parle dans l'intro. Puis le reste c'est flou...!

    Et oui j'ai cherché, mais à part ces tutos là je suis tombé que sur des forums.

    Je reprendais cela à tête reposé demain.

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 433
    Points : 240
    Points
    240
    Par défaut
    Je me suis attaqué aux codes des exemples du premier tuto, mais la bibliothèque Zlib ne semblait pas être installée car le fichier zlib.h demeurait introuvable.

    Je l'ai donc téléchargée ici: http://www.zlib.net/
    (Je travaille sous Code::Blocks)
    Puis j'ai mis les headers dans 'includes' de CB, les trois fichiers 'zdll.exp', 'zdll.lib', 'zlib.def' dans le dossier 'lib' de CB. En revanche, une dll différente étais déjà en place dans System32 et dans le dossier 'bin' de CB.

    Après cela, il y a une nouvelle erreur à la compilation:
    undefined reference to `gzopen'

    J'en déduit que l'installation à échouée !
    Une suggestion ?

  8. #8
    Membre actif Avatar de ironzorg
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 288
    Points : 245
    Points
    245
    Par défaut
    Oublie ton idée et n'utilise pas SDL_RWops

  9. #9
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par ironzorg
    Oublie ton idée et n'utilise pas SDL_RWops
    Pourquoi ne pas utiliser SDL_RWops ?

    Jc

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 433
    Points : 240
    Points
    240
    Par défaut
    Bah oui c'est clair, SDL_RWops semble être une des seule solution justement, je ne voie pas pourquoi il faudrait s'en passer !

  11. #11
    Rédacteur

    Avatar de loka
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    2 672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 672
    Points : 5 509
    Points
    5 509
    Par défaut
    Je pense que Ironzorg faisait de l'humour

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 433
    Points : 240
    Points
    240
    Par défaut
    Mouais mais ca fait pas toujours avancer la chose

  13. #13
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par FabaCoeur
    Mouais mais ca fait pas toujours avancer la chose
    C'est pas faux, je vais tenter de trouver du temps pour faire une source qui utilise les fonctions SDL_RWops ce soir,
    Jc

  14. #14
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 433
    Points : 240
    Points
    240
    Par défaut
    Ca serait vraiment sympas !
    Et surtout très utile pour beaucoup de monde car sur le net il n'y en a pas tant que ça apparement.

  15. #15
    Rédacteur

    Avatar de loka
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    2 672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 672
    Points : 5 509
    Points
    5 509
    Par défaut
    On devrait peut être penser à en faire même un tuto après la source, ce serais pas un mal car il me semble que ce n'est pas la première fois que je vois ce genre de question.

  16. #16
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 433
    Points : 240
    Points
    240
    Par défaut
    C'est un problème qui vient assez naturellement à la fin d'un projet SDL, au moment de la distribution. On voudrait ne donner que l'éxecutable (et les dll à la rigueur), en aucun cas les ressources d'autant plus qu'en modifiant une image, elle est modifiée dans le jeu. Je ne pense pas qu'il y ai beaucoup de developpeur qui veuille bien qu'on modifie son programme d'une telle façon

  17. #17
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par loka
    On devrait peut être penser à en faire même un tuto après la source, ce serais pas un mal car il me semble que ce n'est pas la première fois que je vois ce genre de question.
    En effet, je suis en train de faire un petit quelque chose dans ce style là. Le problème de la source toute seule c'est qu'on aurait du mal à comprendre ce que j'ai fait...

    Du coup, je tapotte un peu pour sortir une explication que j'espère sera claire...

    Par contre :

    On voudrait ne donner que l'éxecutable (et les dll à la rigueur), en aucun cas les ressources d'autant plus qu'en modifiant une image, elle est modifiée dans le jeu. Je ne pense pas qu'il y ai beaucoup de developpeur qui veuille bien qu'on modifie son programme d'une telle façon
    C'est la discussion OpenSource vs Code caché... Personnellement, je suis pour l'OpenSource pour la simple et bonne raison que ce que je fais n'est pas assez bon pour être commercialisé et du coup si cela dit à quelqu'un de modifier les images, les textes ou le comportement d'un de mes programmes et que cela l'amuse ne serait-ce que pendant quelques heures alors tant mieux.

    Où est le mal ? La personne a profité du programme, s'est amusé. Que ce soit avec le programme de base ou une version modifiée, cela ne change pas grand chose.

    Je ne parle que de programme stand-alone et non des clients à des serveurs de jeux...

    Jc

  18. #18
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 433
    Points : 240
    Points
    240
    Par défaut
    Bah dans ce cas là, il faut donner les sources avec.

    Si jamais un utilisateur désire avoir les sources après avoir utilisé le programme, il me contacte et je lui donnerai sans problème (ou au pire, je laisserai un lien dans un readme), mais quand je distriburai mon programme je ne mettrai que le strict minimum.

    Après tout cela dépend du programme, mais la simplicité reigne. Je connais des gens avec qui l'informatique fait deux, et ils auront déjà du mal à trouver quel fichier il faut éxecuter parmis les quatres

  19. #19
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par FabaCoeur
    Bah dans ce cas là, il faut donner les sources avec.

    Si jamais un utilisateur désire avoir les sources après avoir utilisé le programme, il me contacte et je lui donnerai sans problème (ou au pire, je laisserai un lien dans un readme), mais quand je distriburai mon programme je ne mettrai que le strict minimum.

    Après tout cela dépend du programme, mais la simplicité reigne. Je connais des gens avec qui l'informatique fait deux, et ils auront déjà du mal à trouver quel fichier il faut éxecuter parmis les quatres
    Comme dit, lorsque tu distribue un jeu, il y a peut-être 1% des gens qui vont s'amuser à modifier quelque chose, du coup, c'est rare que ce soit la peine de prendre le temps de mettre un système de protection en place. Cela complique le programme généralement...

    Jc

  20. #20
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    940
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 940
    Points : 1 817
    Points
    1 817
    Par défaut
    Attention, je me rappelle notamment que selon la license SDL, seul un projet open source peut inclure la SDL directement dans l'exécutable. Les autres projets doivent fournir le DLL.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 0
    Dernier message: 08/12/2009, 22h20
  2. Réponses: 2
    Dernier message: 18/08/2009, 14h19
  3. [DBase][BDE]Insérer des images JPeg dans un table.u
    Par migauvin dans le forum Bases de données
    Réponses: 3
    Dernier message: 24/08/2004, 12h03

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