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 :

Compilation du programme Velena


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 166
    Billets dans le blog
    9
    Par défaut Compilation du programme Velena
    Bonjour !

    Je cherche un moyen de compiler pour Windows le programme Velena. C'est un programme qui joue parfaitement à Puissance 4 (comme cela est expliqué dans la documentation, très intéressante d'ailleurs). On peut télécharger une version compilée avec interface graphique (qui nécessite un émulateur DOS) mais aussi le code source du moteur seul, pour une utilisation par ligne de commande.

    C'est la version "console" qui m'intéresse. Cependant en C je n'ai jamais fait que des petits programmes tenant dans un seul fichier, donc je ne sais pas trop comment m'y prendre. J'ai fait un essai avec Visual C++ 2010, mais apparemment le code n'est pas compatible avec ce compilateur (et je n'ai aucune idée des modifications qu'il faudrait faire). J'ai fait aussi quelques tentatives avec MinGW GCC mais sans plus de succès.

    Je me suis dit que le problème intéresserait peut-être quelqu'un. En tout cas, le code vaut le coup d'œil.

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Avec les sources, il y a un fichier nommé makefile. C'est un point d'entrée pour l'utilitaire make, qui va alors construire l'exécutable à partir des sources. Sous Unix, il te suffit de faire make pour la magie opère. Si tu as installé MinGW sous Windows, il doit y avoir un équivalent de make. Tu devrais pouvoir t'en sortir facilement avec cela

  3. #3
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 166
    Billets dans le blog
    9
    Par défaut
    @Bktero

    Merci pour la réponse. OK, je me lance sur cette piste.

  4. #4
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 166
    Billets dans le blog
    9
    Par défaut
    Bien, j'ai essayé d'utiliser tel quel le fichier MAKEFILE, de deux façons.

    1° Avec la ligne suivante (collée dans un fichier build.cmd se trouvant dans le même répertoire que le code source) :

    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    c:\mingw\bin\mingw32-make.exe -f MAKEFILE >> build.txt 2>&1

    J'obtiens l'erreur suivante :

    mingw32-make: *** No rule to make target 'adjmtrx.o', needed by 'veleng'. Stop.
    2° Avec cette ligne :

    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    c:\mingw\msys\1.0\bin\make.exe -f MAKEFILE >> build.txt 2>&1

    J'obtiens l'erreur suivante :

    gcc -c -O3 -o adjmtrx.o adjmtrx.c
    adjmtrx.c:15: No include path in which to find stdio.h
    adjmtrx.c:16: No include path in which to find string.h
    adjmtrx.c:17: No include path in which to find stdlib.h
    adjmtrx.c:18: No include path in which to find malloc.h
    In file included from adjmtrx.c:24:
    pnsearch.h:1: No include path in which to find time.h
    make: *** [adjmtrx.o] Error 1
    Voyant cela, je me suis inspiré du fichier MAKEFILE pour essayer de construire une ligne de commande directement dans mon fichier batch :

    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    set path=c:\mingw\bin
     
    c:\mingw\bin\gcc.exe adjmtrx.c connect4.c error.c ia_main.c pnsearch.c bintree.c database.c evaluate.c pbsolver.c wc.c buildob.c dummy.c heurist.c playgame.c cmdline.c -o veleng >> build.txt 2>&1

    Cette fois j'obtiens comme résultat une foule d'avertissements et quelques erreurs qui sont presque toutes du même type, à savoir :

    CONNECT4.C: In function 'void initboard(board*)':
    CONNECT4.C:119:12: error: 'randomize' was not declared in this scope
    randomize();
    ^
    Voilà où j'en suis. Je vais voir si je peux comprendre cette erreur et éventuellement trouver le moyen de la corriger, peut-être en modifiant le code.

  5. #5
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 166
    Billets dans le blog
    9
    Par défaut
    Pour l'erreur relative à la fonction randomize(), j'ai fait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    void randomize(); // Modification 24/02/2015
    void initboard(struct board *board)
    L'erreur n'apparaît plus. J'ai bon ? Je peux appliquer le même procédé à toutes les erreurs de ce type ?

    Ensuite j'ai eu l'erreur suivante :

    CONNECT4.C:279:29: error: '::main' must return 'int'
    J'ai fait cette correction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    //void main(short ac,char **av)
    int main(short ac,char **av) // Modification 24/02/2015
    	{
    	...
            //exit(0);
            return 0;  // Modification 24/02/2015
            }
    Est-ce qu'il n'y aurait pas une option de compilation spéciale "vieux programmes" qui me permettrait de gagner du temps ?

    Y a-t-il un moyen de supprimer les avertissements pour ne voir que les erreurs ?

    Pensez-vous que je sois sur la bonne voie ? Toute suggestion est la bienvenue.

    J'aimerais bien pouvoir compiler ce programme pour pouvoir l'appeler à partir d'une interface graphique que j'ai déjà faite. Ou mieux encore, j'aimerais bien en faire une DLL, mais je n'en suis pas encore là...

  6. #6
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 166
    Billets dans le blog
    9
    Par défaut
    Ouf ! Voici les seules erreurs qui me restent :

    EVALUATE.C: In function 'void debug_black(board*)':
    EVALUATE.C:1428:11: error: 'x' does not name a type
    register x;
    ^
    EVALUATE.C: In function 'short int evaluate_black(board*)':
    EVALUATE.C:1754:11: error: 'x' does not name a type
    register x;
    ^
    EVALUATE.C: In function 'short int ss_evaluate_black(board*)':
    EVALUATE.C:1932:11: error: 'x' does not name a type
    register x;
    ^
    BUILDOB.C: In function 'void build_white_opening_book()':
    BUILDOB.C:166:47: error: invalid conversion from 'unsigned char*' to 'char*' [-fpermissive]
    if(posit>0) insert_obook_tree(blk,root);
    ^
    BUILDOB.C:61:6: error: initializing argument 1 of 'void insert_obook_tree(char*, tree_type*)' [-fpermissive]
    void insert_obook_tree(char *position,struct tree_type *curr_tree)
    ^
    Auriez-vous une idée des modifications à apporter ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Outils][C#] Comment compiler un programme ?
    Par H-bil dans le forum EDI/Outils
    Réponses: 4
    Dernier message: 06/04/2007, 12h18
  2. Compiler un programme avec winapi.h
    Par mannostab dans le forum Langage
    Réponses: 2
    Dernier message: 06/10/2006, 22h06
  3. Compiler un programme perl pour palteforme Win32
    Par LE NEINDRE dans le forum Modules
    Réponses: 1
    Dernier message: 11/01/2006, 14h27
  4. [Compilation] Dev ne peut pas compiler mon programme
    Par Rémaill dans le forum Dev-C++
    Réponses: 9
    Dernier message: 01/11/2005, 00h41
  5. Delphi 2005 : Erreur de compilation du programme
    Par bigbestboy dans le forum Langage
    Réponses: 6
    Dernier message: 03/08/2005, 18h14

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