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 :

Utilisation d'un code source externe


Sujet :

C++

  1. #1
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 76
    Points : 49
    Points
    49
    Par défaut Utilisation d'un code source externe
    Bonsoir ,


    Tous abord , mes meilleurs vœux pour cette nouvelle année !

    Je voudrez développer une application utilisant les sources d'un autres !
    Pour la petite histoire , cette derniére est une application de type console permettant la convertion d'un fichier ISO en un fichier WBFS ( pour la wii ) , Bref' !
    J'ai donc télècharger les sources du logiciel , un dossier qui contient des .c ainsi que des .h .
    J'ai compiler en faisant : make , dans le dosssier et sa fonctionne niquel . L'éxecutable est générer et fonctionne.

    Maintenant j'aimerais pouvoir me servir des fonctions que me propose l'executable . J'ai lu que dans un fichier : "wbfs.c" il y a une méthodes que se nomme conv_to_iso(...) , ce qui me serais utile .

    Dois-je me servit de l'executable en lui meme via la fonction System , ou puis-je ajouter à mon projet toutes les sources pour me servir des méthodes ?

    *Confus?*

    Merci à vous

  2. #2
    Membre expérimenté Avatar de alexrtz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2003
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2003
    Messages : 639
    Points : 1 359
    Points
    1 359
    Par défaut
    Citation Envoyé par chepac Voir le message
    Dois-je me servit de l'executable en lui meme via la fonction System , ou puis-je ajouter à mon projet toutes les sources pour me servir des méthodes ?
    Tu peux ajouter à ton projet les sources dont tu as besoin pour te servir des méthodes que tu veux (et pas forcément toutes les sources ).

    Une petite recherche avec "compilation séparée" sur Google te donneras plein de tutos
    "Je suis incapable d'expliquer ce qui se passa ensuite : je lâchai quelque chose, quelque chose à quoi je m'agrippais depuis toujours sans m'en rendre compte. Je m'enfonçais dans une obscurité chaude, moelleuse et protectrice, tandis qu'un loup montait la garde par mes propres yeux."

  3. #3
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 76
    Points : 49
    Points
    49
    Par défaut
    Merci de ta réponse !

    Mais ce que je ne comprend pas , dois-je compiler les sources que j'ai télècharger pour en faire une librairies utilisable par mon projet ?
    Parce que j'ai déja ajouter à mon projet les .c et .h que j'ai besoin mais il y à toujours un probléme de lien :
    Le compilo hurle : Error in file included from .....

    Voici les sources que je vous parle : http://cfg-loader.googlecode.com/fil..._2.3_win32.zip
    l'archive contient un dossier "source" avec tous les .c & .h !

    Merci encore

  4. #4
    Membre expérimenté Avatar de alexrtz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2003
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2003
    Messages : 639
    Points : 1 359
    Points
    1 359
    Par défaut
    Citation Envoyé par chepac Voir le message
    Mais ce que je ne comprend pas , dois-je compiler les sources que j'ai télècharger pour en faire une librairies utilisable par mon projet ?
    Il faut que tu trouves tous les fichiers dont tu as besoin pour utiliser la fonction que tu veux.
    Ensuite, tu prends ces fichiers, et soit tu les ajoutes à ton projet soit tu crées un nouveau projet de bilbiothèque dans lequel tu mets ces fichiers.
    Dans le deuxième cas, il faudra ensuite dire à l'éditeur de liens d'utiliser la bibliothèque générée.


    Citation Envoyé par chepac Voir le message
    Parce que j'ai déja ajouter à mon projet les .c et .h que j'ai besoin mais il y à toujours un probléme de lien :
    Le compilo hurle : Error in file included from .....
    C'est pas forcément une erreur de lien.
    Quel est le message du compilateur ?
    "Je suis incapable d'expliquer ce qui se passa ensuite : je lâchai quelque chose, quelque chose à quoi je m'agrippais depuis toujours sans m'en rendre compte. Je m'enfonçais dans une obscurité chaude, moelleuse et protectrice, tandis qu'un loup montait la garde par mes propres yeux."

  5. #5
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 76
    Points : 49
    Points
    49
    Par défaut
    Merci de ta réponse !

    J'ai essayer de faire une librairie static , la compilation se deroule bien . J'ai copier la lib (.a) dans mes Documents et , je l'ai rajouter au projet.
    Mais , la fonction : conv_to_iso not in the scope , il manque un #include apparemment !

    Lorsque j'ajoute les sources a mon projet , j'ai toujours un probléme d'édition de liens ... ! Je me demande si je peux vraiment me servir des fonctions proposer !

    Elle se trouve dans le fichier wbfs.c qui ne possédent pas de header ?! C'est pas normal ?

    Merci d'avance

  6. #6
    Membre expérimenté Avatar de alexrtz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2003
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2003
    Messages : 639
    Points : 1 359
    Points
    1 359
    Par défaut
    OK, j'viens de voir ce qui c*****e : la fonction main est définie dans wbfs.c, c'est pour ça qu'il n'y a pas d'inclusion de header.
    C'est aussi pour ça que tu auras quoi qu'il arrive un problème dans l'édition des liens (fonction main définie 2 fois, toussa).

    Il faut d'abord virer le main de wbfs.c puis créer un wbfs.h avec les déclarations des fonctions que tu veux utiliser.
    "Je suis incapable d'expliquer ce qui se passa ensuite : je lâchai quelque chose, quelque chose à quoi je m'agrippais depuis toujours sans m'en rendre compte. Je m'enfonçais dans une obscurité chaude, moelleuse et protectrice, tandis qu'un loup montait la garde par mes propres yeux."

  7. #7
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 76
    Points : 49
    Points
    49
    Par défaut
    Merci de ta réponse ,


    J'ai donc crée un .h avec les fonctions , mais lors de la compilation , il me dit justement qu'il y a des multiple définition de main :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    g++ `wx-config --cxxflags`     `wx-config --libs` -o dist/Debug/GNU-Linux-x86/new_gui  build/Debug/GNU-Linux-x86/_ext/_DOTDOT/Wbfs_File_GUI/wbfs/source/tools.o build/Debug/GNU-Linux-x86/_ext/_DOTDOT/Wbfs_File_GUI/wbfs/source/libwbfslite/libwbfs.o build/Debug/GNU-Linux-x86/_ext/_DOTDOT/Wbfs_File_GUI/wbfs/source/ec.o build/Debug/GNU-Linux-x86/_ext/_DOTDOT/_DOTDOT/Documents/DialogBlocks_Projects/Wbfs_GUI/gestionnaire_wbfsapp.o build/Debug/GNU-Linux-x86/_ext/_DOTDOT/Wbfs_File_GUI/wbfs/source/disc_usage_table.o build/Debug/GNU-Linux-x86/_ext/_DOTDOT/Wbfs_File_GUI/wbfs/source/splits.o build/Debug/GNU-Linux-x86/_ext/_DOTDOT/Wbfs_File_GUI/wbfs/source/libwbfs/wiidisc.o build/Debug/GNU-Linux-x86/_ext/_DOTDOT/Wbfs_File_GUI/wbfs/source/libwbfs/rijndael.o build/Debug/GNU-Linux-x86/_ext/_DOTDOT/Wbfs_File_GUI/wbfs/source/libwbfs/libwbfs_linux.o build/Debug/GNU-Linux-x86/_ext/_DOTDOT/Wbfs_File_GUI/wbfs/source/bn.o build/Debug/GNU-Linux-x86/_ext/_DOTDOT/Wbfs_File_GUI/wbfs/source/libwbfs/libwbfs_osx.o build/Debug/GNU-Linux-x86/_ext/_DOTDOT/Wbfs_File_GUI/wbfs/source/libwbfs/libwbfs.o build/Debug/GNU-Linux-x86/_ext/_DOTDOT/_DOTDOT/Documents/DialogBlocks_Projects/Wbfs_GUI/fragui.o build/Debug/GNU-Linux-x86/_ext/_DOTDOT/Wbfs_File_GUI/wbfs/source/libwbfs/libwbfs_win32.o build/Debug/GNU-Linux-x86/_ext/_DOTDOT/Wbfs_File_GUI/wbfs/source/wbfs.o ../../Documents/liblibwfs_vv.a 
    build/Debug/GNU-Linux-x86/_ext/_DOTDOT/Wbfs_File_GUI/wbfs/source/libwbfs/libwbfs.o: In function `wbfs_open_disc':
    /home/vince/NetBeansProjects/New_GUI/../Wbfs_File GUI/wbfs/source/libwbfs/libwbfs.c:183: multiple definition of `wbfs_open_disc'
    build/Debug/GNU-Linux-x86/_ext/_DOTDOT/Wbfs_File_GUI/wbfs/source/libwbfslite/libwbfs.o:/home/vince/NetBeansProjects/New_GUI/../Wbfs_File GUI/wbfs/source/libwbfslite/libwbfs.c:82: first defined here
    build/Debug/GNU-Linux-x86/_ext/_DOTDOT/Wbfs_File_GUI/wbfs/source/libwbfs/libwbfs.o: In function `wbfs_disc_read':
    /home/vince/NetBeansProjects/New_GUI/../Wbfs_File GUI/wbfs/source/libwbfs/libwbfs.c:226: multiple definition of `wbfs_disc_read'
    build/Debug/GNU-Linux-x86/_ext/_DOTDOT/Wbfs_File_GUI/wbfs/source/libwbfslite/libwbfs.o:/home/vince/NetBeansProjects/New_GUI/../Wbfs_File GUI/wbfs/source/libwbfslite/libwbfs.c:111: first defined here
    build/Debug/GNU-Linux-x86/_ext/_DOTDOT/Wbfs_File_GUI/wbfs/source/tools.o: In function `md5':
    /home/vince/NetBeansProjects/New_GUI/../Wbfs_File GUI/wbfs/source/tools.c:64: undefined reference to `MD5'
    build/Debug/GNU-Linux-x86/_ext/_DOTDOT/Wbfs_File_GUI/wbfs/source/tools.o: In function `sha':
    /home/vince/NetBeansProjects/New_GUI/../Wbfs_File GUI/wbfs/source/tools.c:69: undefined reference to `SHA1'
    build/Debug/GNU-Linux-x86/_ext/_DOTDOT/Wbfs_File_GUI/wbfs/source/tools.o: In function `aes_cbc_dec':
    /home/vince/NetBeansProjects/New_GUI/../Wbfs_File GUI/wbfs/source/tools.c:95: undefined reference to `AES_set_decrypt_key'
    /home/vince/NetBeansProjects/New_GUI/../Wbfs_File GUI/wbfs/source/tools.c:96: undefined reference to `AES_cbc_encrypt'
    build/Debug/GNU-Linux-x86/_ext/_DOTDOT/Wbfs_File_GUI/wbfs/source/tools.o: In function `aes_cbc_enc':
    /home/vince/NetBeansProjects/New_GUI/../Wbfs_File GUI/wbfs/source/tools.c:103: undefined reference to `AES_set_encrypt_key'
    /home/vince/NetBeansProjects/New_GUI/../Wbfs_File GUI/wbfs/source/tools.c:104: undefined reference to `AES_cbc_encrypt'
    build/Debug/GNU-Linux-x86/_ext/_DOTDOT/Wbfs_File_GUI/wbfs/source/tools.o: In function `check_ec':
    /home/vince/NetBeansProjects/New_GUI/../Wbfs_File GUI/wbfs/source/tools.c:177: undefined reference to `SHA1'
    build/Debug/GNU-Linux-x86/_ext/_DOTDOT/Wbfs_File_GUI/wbfs/source/libwbfslite/libwbfs.o: In function `wbfs_get_list':
    libwbfs.c:(.text+0x259): undefined reference to `wbfs_be32'
    build/Debug/GNU-Linux-x86/_ext/_DOTDOT/Wbfs_File_GUI/wbfs/source/libwbfslite/libwbfs.o: In function `wbfs_open_disc':
    libwbfs.c:(.text+0x340): undefined reference to `wbfs_be32'
    build/Debug/GNU-Linux-x86/_ext/_DOTDOT/Wbfs_File_GUI/wbfs/source/libwbfslite/libwbfs.o: In function `wbfs_disc_read':
    libwbfs.c:(.text+0x40f): undefined reference to `wbfs_be16'
    libwbfs.c:(.text+0x500): undefined reference to `wbfs_be16'
    libwbfs.c:(.text+0x5c6): undefined reference to `wbfs_be16'
    collect2: ld returned 1 exit status
    make[2]: *** [dist/Debug/GNU-Linux-x86/new_gui] Erreur 1
    make[2]: quittant le répertoire « /home/vince/NetBeansProjects/New_GUI »
    make[1]: *** [.build-conf] Erreur 2
    make[1]: quittant le répertoire « /home/vince/NetBeansProjects/New_GUI »
    make: *** [.build-impl] Erreur 2
    BUILD FAILED (exit value 2, total time: 8s)
    Merci à toi !

  8. #8
    Membre expérimenté Avatar de alexrtz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2003
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2003
    Messages : 639
    Points : 1 359
    Points
    1 359
    Par défaut
    En pj le répertoire source du projet wbfs avec quelques modifs.
    La compilation génère un binaire nommé test qui utilise conv_to_iso, dont le code est dans test.c.
    Le Makefile et le fichier wbfs.c ont été un peu modifiés.
    Fichiers attachés Fichiers attachés
    "Je suis incapable d'expliquer ce qui se passa ensuite : je lâchai quelque chose, quelque chose à quoi je m'agrippais depuis toujours sans m'en rendre compte. Je m'enfonçais dans une obscurité chaude, moelleuse et protectrice, tandis qu'un loup montait la garde par mes propres yeux."

  9. #9
    Débutant
    Inscrit en
    Décembre 2006
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 100
    Points : 46
    Points
    46
    Par défaut
    Bonjour je souhaiterai utilisé exactement la même lib mais le problème c'est que je voudrai ajouter du c++ et du coup je ne sais pas comment le compilé en c++.

    J'ai bien essayé de remplacer gcc par g++ dans le makefile mais cela ne donne rien très concluant !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    lenul79@lenul79-laptop:~/projet wbfs/source$ make
    g++ -Wall -W -O  -Ilibwbfs -I.   -c -o test.o test.c
    gcc -Wall -W -O  -Ilibwbfs -I. -static  tools.o bn.o ec.o libwbfs.o wiidisc.o rijndael.o splits.o libwbfs_linux.o  wbfs.o test.o -lcrypto -ldl -o test
    test.o: In function `global constructors keyed to main':
    test.c:(.text+0x18): undefined reference to `std::ios_base::Init::Init()'
    test.c:(.text+0x2f): undefined reference to `std::ios_base::Init::~Init()'
    test.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
    collect2: ld returned 1 exit status
    make: *** [test] Erreur 1

Discussions similaires

  1. Réponses: 3
    Dernier message: 25/07/2009, 11h40
  2. Réponses: 1
    Dernier message: 19/06/2008, 08h31
  3. Réponses: 4
    Dernier message: 20/11/2007, 16h13
  4. [Debutant] Utilisation code source.
    Par Mickie dans le forum Débuter
    Réponses: 4
    Dernier message: 11/05/2007, 17h10

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