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

Code::Blocks Discussion :

compilation de projets utilisant la galib


Sujet :

Code::Blocks

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 25
    Points : 13
    Points
    13
    Par défaut compilation de projets utilisant la galib
    Bonjour,

    J'ai d'installé la galib (avec le devpack installer). Je tente de compiler le premier exemple fournit de cette librairie.

    J'obtiens une avalanche d'erreurs toutes de même forme (undefined ref) :

    C:\Program Files\CodeBlocks\Examples\ga\ex1.o:ex1.C.text+0x21e) : undefined reference to `GARandomSeed(unsigned int)'

    Pourtant dans l'entête du .cpp il y a : #include <ga/garandom.h>

    dans lequel GARandomSeed est définie. Le compilo trouve fichier (sinon j'aurais <ga/garandom.h> file unknown). (Le répertoire est indiqué dans les l'environnement du compilo, comme le include traditionnel)

    Bref, Quequ'un a-t-il réussi à développer du code avec la galib avec l'EDI CB?

    Merci d'avance, Patrick.

  2. #2
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    tu ne donnes pas beaucoup de détails

    - Sont-ce des erreurs de compilation ou des erreur d'édition de lien?
    - As-tu correctement géré les dépendances de ton projet?
    - Utilises-tu galib de façon statique ou dynamique?
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par r0d Voir le message
    Bonjour,

    tu ne donnes pas beaucoup de détails

    - Sont-ce des erreurs de compilation ou des erreur d'édition de lien?
    - As-tu correctement géré les dépendances de ton projet?
    - Utilises-tu galib de façon statique ou dynamique?
    Désolé, c'est vrai...

    1. Ce sont des erreurs de compil.
    2. J'utilise galib de façon statique (je n'ai pas compilé la librairie [make etc..])
    3. Les dépendances du projet, c'est bien cela qui m'embète.

    Voici un extrait du code :
    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
     
    #include <ga/GASimpleGA.h>	// we're going to use the simple GA
    #include <ga/GA2DBinStrGenome.h> // and the 2D binary string genome
    #include <ga/std_stream.h>
    #include <ga/garandom.h>
     
    #define cout STD_COUT
     
    float Objective(GAGenome &);	// This is the declaration of our obj function.
    				// The definition comes later in the file.
     
    int
    main(int argc, char **argv)
    {
      cout << "Example 1\n\n";
      cout << "This program tries to fill a 2DBinaryStringGenome with\n";
      cout << "alternating 1s and 0s using a SimpleGA\n\n"; cout.flush();
     
    // See if we've been given a seed to use (for testing purposes).  When you
    // specify a random seed, the evolution will be exactly the same each time
    // you use that seed number.
     
      for(int ii=1; ii<argc; ii++) {
        if(strcmp(argv[ii++],"seed") == 0) {
          GARandomSeed((unsigned int)atoi(argv[ii]));
        }
      }
    etc...

    et voici la première erreur donnée à la compil :
    D:/Mes documents/RECHERCHE/DEVELOPPEMENT/monGA/main.cpp:39: undefined reference to `GARandomSeed(unsigned int)'

    Or, comme je le disais le fichier ga/garandom.h est trouvé (comme les autres dailleurs...), et on y trouve la déclaration suivante :


    void GARandomSeed(unsigned int seed=0); qui est implémentée dans garandom.C

    Voilà...

    Merci, Patrick.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par Pcoquill Voir le message
    Désolé, c'est vrai...

    1. Ce sont des erreurs de compil.
    2. J'utilise galib de façon statique (je n'ai pas compilé la librairie [make etc..])
    3. Les dépendances du projet, c'est bien cela qui m'embète.

    Voici un extrait du code :
    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
     
    #include <ga/GASimpleGA.h>	// we're going to use the simple GA
    #include <ga/GA2DBinStrGenome.h> // and the 2D binary string genome
    #include <ga/std_stream.h>
    #include <ga/garandom.h>
     
    #define cout STD_COUT
     
    float Objective(GAGenome &);	// This is the declaration of our obj function.
    				// The definition comes later in the file.
     
    int
    main(int argc, char **argv)
    {
      cout << "Example 1\n\n";
      cout << "This program tries to fill a 2DBinaryStringGenome with\n";
      cout << "alternating 1s and 0s using a SimpleGA\n\n"; cout.flush();
     
    // See if we've been given a seed to use (for testing purposes).  When you
    // specify a random seed, the evolution will be exactly the same each time
    // you use that seed number.
     
      for(int ii=1; ii<argc; ii++) {
        if(strcmp(argv[ii++],"seed") == 0) {
          GARandomSeed((unsigned int)atoi(argv[ii]));
        }
      }
    etc...

    et voici la première erreur donnée à la compil :
    D:/Mes documents/RECHERCHE/DEVELOPPEMENT/monGA/main.cpp:39: undefined reference to `GARandomSeed(unsigned int)'

    Or, comme je le disais le fichier ga/garandom.h est trouvé (comme les autres dailleurs...), et on y trouve la déclaration suivante :


    void GARandomSeed(unsigned int seed=0); qui est implémentée dans garandom.C

    Voilà...

    Merci, Patrick.


    ERRREURRR! Il s'agirait d'erreur à l'édition de lien. Un main.o est bien créé.
    Désolé.

  5. #5
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Ok, alors avant tout (désolé si mon intervention est stupide, mais il vaut mieux commencer par le début), as-tu ajouté le lien vers la lib? J'imagine que le nom du fichier doit être galib.lib (ou libgalib.lib, bref, un truc dans le style). Par contre, étant donné que tu es sur Windows, je ne sais pas où ce fichier a été copié. Pour ajouter ce lien, tu fais: clic droit sur ton projet -> build options -> linker settings. Et là, tu as un textbox où tu dois rajouter ce fichier.
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par r0d Voir le message
    Ok, alors avant tout (désolé si mon intervention est stupide, mais il vaut mieux commencer par le début), as-tu ajouté le lien vers la lib? J'imagine que le nom du fichier doit être galib.lib (ou libgalib.lib, bref, un truc dans le style). Par contre, étant donné que tu es sur Windows, je ne sais pas où ce fichier a été copié. Pour ajouter ce lien, tu fais: clic droit sur ton projet -> build options -> linker settings. Et là, tu as un textbox où tu dois rajouter ce fichier.
    Bon, désolé mais j'ai été très occuppé.
    Naivement je pensais que le DevPack Installer, installait vraiment la galib. Il n'en est rien il a juste copié les fichiers au bon endroit, mais rien "installé" du tout. Donc, il faut compiler "à la main la Ga-lib. Il y a bien un Makefile.win (plus un makefile.bcc + un makefile vcpp + un makefile pour linux), mais avec les paramètres (chemin de la lib et autres) pour Dev-cpp, ce qui n'est pas exactement ceux de CB.
    Bref j'ai changé ce qu'il y avait à changer et lancé make. Mais ça ne va pas bien loin. j'obtiens un message un peu étrange car tout me semble correct :

    make: *** No rule to make target `ga/GA1DArrayGenome.C', needed by `ga/GA1DArrayGenome.o'. Stop.

    Or, il y a bien une règle pour compiler GA1DArrayGenome.C

    Puisqu'il y a un makefile pour BCC, je me demande si je ne vais pas le downloader...Qu'en pense-tu ?

    Autre chose: j'ai installé CB dans C:\Program Files\CodeBlock
    Jai essayé les deux écritures dans le makefile : la précédente et celle-ci (idem celle du path) : -I"C:\progra~1\Codeblock". Je ne sais pas trop laquelle passe pour le compilo...

    Merci d'avance, P.

  7. #7
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Salut,

    bon ben ça fait environ une heure que je me bat pour compiler cette lib (tu m'as contraint à ouvrir un vieux windows xp que je n'utilise plus depuis 2 ans... beuuurk. lol :p), et il y a vraiment trop de choses qui ne fonctionnent pas. Je laisse tomber. En général, quand on doit commencer à modifier le code pour que ça compile, c'est mauvais signe...

    Donc bon, si cette lib t'es indispensable, la seule chose que je puisse faire pour toi c'est de te donner un conseil: inscris-toi sur la mailing list (qui semble moyennement active, une dizaine de topic par mois, c'est très bien pour ce genre de projet) et envoie un mail avec tes problèmes de compil.

    Désolé, et bon courage pour la suite

    edit: aprés avoir parcouru un peu les archives de la mailing list, je vois que visiblement tout est fait pour que ça compile bien avec visual. Donc bon, puisque tu es sous Windows, l'option visual express (version gratuite de visual8) est peut-être une option.
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par r0d Voir le message
    Salut,

    bon ben ça fait environ une heure que je me bat pour compiler cette lib (tu m'as contraint à ouvrir un vieux windows xp que je n'utilise plus depuis 2 ans... beuuurk. lol :p), et il y a vraiment trop de choses qui ne fonctionnent pas. Je laisse tomber. En général, quand on doit commencer à modifier le code pour que ça compile, c'est mauvais signe...

    Donc bon, si cette lib t'es indispensable, la seule chose que je puisse faire pour toi c'est de te donner un conseil: inscris-toi sur la mailing list (qui semble moyennement active, une dizaine de topic par mois, c'est très bien pour ce genre de projet) et envoie un mail avec tes problèmes de compil.

    Désolé, et bon courage pour la suite

    edit: aprés avoir parcouru un peu les archives de la mailing list, je vois que visiblement tout est fait pour que ça compile bien avec visual. Donc bon, puisque tu es sous Windows, l'option visual express (version gratuite de visual8) est peut-être une option.

    Je suis désolé de t'avoir fait perdre ton temps. J'ai effectivement regardé la mailing list. Ce n'est pas très actif. La plupart des gens bossent sous linux (Red Hat). Je pense que c'est ce que je vais faire, tant pis pour le confort l'EDI sous windows. Mais oui j'ai vraiment besoin de cette lib car je travaille sur des problèmes d'optimisation de comportement d'insectes simulés capables d'apprendre (et d'oublier) de pondre de chercher etc...Les algo génétiques sont idéals pour cela.

    Merci pour tout, c'était très sympa ! Patrick.

Discussions similaires

  1. [Compilation] Compiler un projet utilisant Qt 5 avec CMake
    Par arnolddumas dans le forum Outils
    Réponses: 0
    Dernier message: 25/04/2013, 23h26
  2. Réponses: 5
    Dernier message: 16/01/2011, 16h14
  3. Réponses: 0
    Dernier message: 13/04/2010, 01h06
  4. Réponses: 0
    Dernier message: 15/11/2009, 15h39

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