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

C++ Discussion :

inclure un fichier binaire


Sujet :

C++

  1. #1
    Membre averti
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 014
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 014
    Points : 407
    Points
    407
    Billets dans le blog
    1
    Par défaut inclure un fichier binaire
    Bonjour, comment inclure un fichier binaire a un projet C++ sous codeblocks ?, il s'agit de données brutes, j'ai cherché mais je n'ai pas trouvé.
    Merci.

  2. #2
    Membre émérite
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 852
    Points : 2 298
    Points
    2 298
    Par défaut
    Je ne comprends pas qu'elle serait ton intérêt à faire ça. Si tu veux juste lire ton fichier avec ton programme il te suffit de le mettre à un emplacement précis sur ton disque dur et de donner le chemin complet à ton programme pour ensuite faire ce que tu veux.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 113
    Points : 32 960
    Points
    32 960
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    je suis à peu près parfaitement sûr que tu ne veux pas "inclure de fichier binaire" mais tout au plus "le lire".
    Tu peux ajouter le fichier de ton choix dans un projet, seuls les .c et .cpp seront de toutes façons compilés.
    Et pour ajouter un fichier, un simple glisser/déplacer depuis l'explorer fait l'affaire.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  4. #4
    Membre averti
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 014
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 014
    Points : 407
    Points
    407
    Billets dans le blog
    1
    Par défaut
    En fait je veux faire une intro (demo), donc a la fin je ne dois me retrouver qu'avec un seul fichier exécutable, je pense que je vais passer par l'asm pour réussir.
    Merci.

  5. #5
    Membre averti
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 014
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 014
    Points : 407
    Points
    407
    Billets dans le blog
    1
    Par défaut
    j'ai un peu progressé dans mes recherche en utilisant ce bon vieil assembleur, en testant j'ai réussi à compiler ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void FONCTION() {
        __asm(
              "label: .incbin \"coords\"");
    }
    Maintenant le défi est de récupérer l'adresse de "label:" dans mon programme en c++.

    Merci pour votre aide.

  6. #6
    Membre émérite
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 852
    Points : 2 298
    Points
    2 298
    Par défaut
    En fait tu veux exécuter du code contenu dans le fichier ? Si c'est une librairie il y a des fonctions pour ça, si c'est un programme compilé par contre...

  7. #7
    Membre averti
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 014
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 014
    Points : 407
    Points
    407
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par imperio Voir le message
    En fait tu veux exécuter du code contenu dans le fichier ? Si c'est une librairie il y a des fonctions pour ça, si c'est un programme compilé par contre...
    Non il y aura plusieurs données :
    -des données brutes
    -des graphismes
    -un module de musique
    mais pas de code

  8. #8
    Membre émérite

    Inscrit en
    Mai 2008
    Messages
    1 014
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 1 014
    Points : 2 252
    Points
    2 252
    Par défaut
    L'astuce classique c'est de faire une première passe sur les fichiers que tu veux intégrer avec un programme du style bin2c (ou prog fait maison, c'est très simple à faire) qui génère à partir d'un fichier quelconque un .h contenant un énorme tableau d'unsigned char dont chaque case représente un octet du fichier en question.

    Par exemple une ressource du style intro.wav après passage à la moulinette bin2c génèrera un fichier intro.h contenant un tableau du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #define INTRO_LEN 33792
    static unsigned char intro[] =
     {
      0x4d,0x5a,0x90,0x00,0x03,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xff,
      0xff,0x00,0x00,0xb8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x0e,
      0x1f,0xba,0x0e,0x00,0xb4,0x09,0xcd,0x21,0xb8,0x01,0x4c,0xcd,0x21,
      0x54,0x68,0x69,0x73,0x20,0x70,0x72,0x6f,0x67,0x72,0x61,0x6d,0x20,
      // etc etc etc
    };

  9. #9
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 113
    Points : 32 960
    Points
    32 960
    Billets dans le blog
    4
    Par défaut
    Si c'est juste pour "insérer les fichiers dans l'executable", alors tu n'as rien à faire que de déclarer des variables const unsigned char[] = {le contenu du fichier}; où le contenu du fichier sera les valeurs de chaque octet du fichier.

    En tous cas je ne vois pas ce que l'assembleur t'apportera de plus.
    Enfin, au final je ne vois pas du tout l'intérêt d'une telle manip faut dire, c'est bien plus simple d'avoir les données partagées et stockées dans leur fichier respectif !
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  10. #10
    Membre averti
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 014
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 014
    Points : 407
    Points
    407
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Bousk Voir le message
    Si c'est juste pour "insérer les fichiers dans l'executable", alors tu n'as rien à faire que de déclarer des variables const unsigned char[] = {le contenu du fichier}; où le contenu du fichier sera les valeurs de chaque octet du fichier.

    En tous cas je ne vois pas ce que l'assembleur t'apportera de plus.
    Enfin, au final je ne vois pas du tout l'intérêt d'une telle manip faut dire, c'est bien plus simple d'avoir les données partagées et stockées dans leur fichier respectif !
    Comme je le disais plus haut, je veux faire une intro, le format de ce genre d'applications c'est un seul fichier exécutable, je vais peut être opter pour l'inclusion de tableau si je n'arrive pas a inclure directement, mais dans ce cas il faut bien que je convertisse les fichier en tableau "à la main" ?
    Et il y a t-il une limite de taille pour les tableau ? (car la ça risque de faire de vraiment gros tableaux).
    Merci

  11. #11
    Membre émérite
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 852
    Points : 2 298
    Points
    2 298
    Par défaut
    La limite de ton tableau sera la limite de la mémoire que ton pc sera capable d'allouer à ton programme, en gros ta RAM, donc je ne pense pas que t'as à t'inquiéter pour ça. Par contre j'ai toujours l'impression que tu veux exécuter ce fichier. Si tel est le cas il y a des fonctions pour ça (CreateProcess sous win et fork / exec* sous unix).

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/11/2006, 18h37
  2. [LG]ecriture dans un fichier binaire
    Par jsaviola dans le forum Langage
    Réponses: 3
    Dernier message: 26/12/2003, 17h30
  3. [Debutant] Comment lire la taille d'un fichier binaire ?
    Par Invité dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 18/12/2003, 19h20
  4. communication fichier binaire fichier txt
    Par micdie dans le forum C
    Réponses: 3
    Dernier message: 05/12/2002, 00h19
  5. fichier binaire ou texte
    Par soussou dans le forum C++Builder
    Réponses: 4
    Dernier message: 14/06/2002, 13h39

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