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

Prolog Discussion :

Intégrer du Prolog dans du C/C++


Sujet :

Prolog

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2002
    Messages : 57
    Points : 23
    Points
    23
    Par défaut Intégrer du Prolog dans du C/C++
    Bonjour,
    Je travaille sur un projet industriel où je vais devoir intégrer du Prolog dans du C/C++ et j'ai vu que amzi permettait de faire ceci... Mais j'ai vu qu'il était payant pour les entreprises. Est-ce que vous savez si je peux faire cette communication en utilisant autre chose qui est gratuit ?
    Parce que j'ai déjà du le faire, mais avec du Java, et là, j'avais utilisé Jasper. Est-ce qu'il existe quelque chose du même genre pour C/C++ ?
    Merci beaucoup et à bientot

  2. #2
    C_C
    C_C est déconnecté
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 139
    Points : 92
    Points
    92
    Par défaut
    Salut,

    il est possible de faire communiquer prolog avec du c/c++ en utilisant des sockets.
    Pour cela il te faudra un prog du genre de Putty.

  3. #3
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut Re: [Prolog] Intégrer du prolog dans du C/C++
    Citation Envoyé par mystar
    Parce que j'ai déjà du le faire, mais avec du Java, et là, j'avais utilisé Jasper.
    J'en déduis que tu utilises Sicstus Prolog

    Oui, en effet, c'est tout à fait possible. Il faut faire une recherche sur le sujet. Voici un lien:
    http://www.sics.se/sicstus/docs/late...nd-Prolog.html

    Fait aussi des recherches sur ce forum, la question a été abordée plusieurs fois.

    PS: je t'ai envoyé un message privé.
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  4. #4
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Tu peux écrire des programmes C ou des Dll qui appellent swi-prolog.
    swi-prolog fournit un compilateur c "plld".
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2002
    Messages : 57
    Points : 23
    Points
    23
    Par défaut Re: [Prolog] Intégrer du prolog dans du C/C++
    Citation Envoyé par pcaboche
    Citation Envoyé par mystar
    Parce que j'ai déjà du le faire, mais avec du Java, et là, j'avais utilisé Jasper.
    J'en déduis que tu utilises Sicstus Prolog

    Oui, en effet, c'est tout à fait possible. Il faut faire une recherche sur le sujet. Voici un lien:
    http://www.sics.se/sicstus/docs/late...nd-Prolog.html

    Fait aussi des recherches sur ce forum, la question a été abordée plusieurs fois.

    PS: je t'ai envoyé un message privé.
    Merci, oui, en effet, j'utilise Sicstus Prolog...
    Mais je ne dois pas être très douée parce que je ne comprend pas grand chose à ce qu'il y a marqué...
    Je voudrais juste charger un fichier .pl et pouvoir interroger le fichier... Enfin, je ne sais pas si je m'explique clairement...
    Mais je ne trouve pas comment le charger... J'ai essayé SP_load mais il n'en veut pas... (au fait, j'utilise visual studio)

    Sinon, je n'ai pas trouvé tant de sujets que ça dessus... c'est dans ce topic ?

    J'ai répondu à ton MP

    a+ et merci de vos aides...

  6. #6
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut Re: [Prolog] Intégrer du prolog dans du C/C++
    Tu as jeté un oeil aux exemples?
    http://www.sics.se/sicstus/docs/late...ing%20Examples
    Visiblement, il faut compiler le programme Prolog avant.

    Pour notre projet, on avait un programme Prolog évalué à partir de Java avec Jasper, ce programme Java communiquait avec un programme C au moyen de sockets et finallement le programme C communiquait avec un autre programme C coté serveur. Comme tu peux le remarquer, dans notre université, on adorait les choses simples!


    Citation Envoyé par mystar
    Sinon, je n'ai pas trouvé tant de sujets que ça dessus... c'est dans ce topic ?
    En fait il n'y a pas eu tant de questions que ça concernant la connectivité de Prolog avec d'autres langages, et la plupart du temps c'était pour du Java.

    J'ai aussi eu des conversations privées avec d'autres personnes sur le sujet, qui n'apparaissent donc pas.

    Citation Envoyé par mystar
    J'ai répondu à ton MP
    Merci beaucoup, j'y ai répondu.
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2002
    Messages : 57
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par pcaboche
    Tu as jeté un oeil aux exemples?
    http://www.sics.se/sicstus/docs/late...ing%20Examples
    Visiblement, il faut compiler le programme Prolog avant.
    Oui, je regarde ça en effet... j'ai essayé de le compiler, mais je suis sous windows, ils me disent donc de le compiler puis de le sauver... mais j'ai un problème... pour le compiler, ça passe sans problème, mais il ne veut pas faire le save_program ... ça me donne fail !!! Je ne comprend pas pourquoi, C'est bizarre ça... Est-ce que vous auriez une idée ?
    Merci beaucoup
    compile(train),save_program('train.sav').


    Citation Envoyé par pcaboche
    Pour notre projet, on avait un programme Prolog évalué à partir de Java avec Jasper, ce programme Java communiquait avec un programme C au moyen de sockets et finallement le programme C communiquait avec un autre programme C coté serveur. Comme tu peux le remarquer, dans notre université, on adorait les choses simples!
    mdr, en effet, je vois... moi aussi je préfererais utiliser jasper... mais ils veulent du C, donc bon...

  8. #8
    Membre confirmé Avatar de billynirvana
    Homme Profil pro
    Architecte technique
    Inscrit en
    Décembre 2004
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 472
    Points : 552
    Points
    552
    Par défaut
    En ce qui me concerne, j'utilise à chaque fois ce bout de code, mais le
    problème est que je n'utilise pas le même prolog que vous tous

    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
    35
    36
    37
    38
    39
    #include <stdio.h>
    #include <stdlib.h>
    #include "proext.h"
    void initialiserProlog() {
            int err;
            if ((err = ProStart("")) == 0)
                    fprintf(stderr, "initialisation reussie");
            else {
                    fprintf(stderr, "initialisation echouee!");
                    exit(err);
            }
    }
    void terminerProlog(int condition) {
            ProFinal(condition);
    }
    void erreurProlog(int numErreur) {
            terminerProlog(numErreur);
            fprintf(stderr, "erreur :'( !");
            exit(-1);
    }
    //////////////
    int afficherSimpleTexteProlog() {
           int res;
           res = new_pattern("outml(coucou)");
           if (res)
              erreurProlog(res);
           res = next_solution();
           kill_goal();
           return res;
    }
     
    //////////////
    int main(int argc, char **argv) {
            int res;
            initialiserProlog();
            res = afficherSimpleTexteProlog();
            terminerProlog(res);
            return res;
    }

    le .h et les autres fichiers inclus sont fournis lors de l'installation de Prolog.


    Si ca peut t'aider...



    Et puis pour revenir, sachant quele prolog que j'utilise n'a pas de connection directe avec Java, alors il faire Java - C - Prolog. Tout un monde, je vous jure...

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2002
    Messages : 57
    Points : 23
    Points
    23
    Par défaut
    C'est gentil, merci beaucoup, mais je ne pense pas que ça fonctionne avec Sicstus Prolog malheureusement...

  10. #10
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Citation Envoyé par mystar
    Oui, je regarde ça en effet... j'ai essayé de le compiler, mais je suis sous windows, ils me disent donc de le compiler puis de le sauver... mais j'ai un problème... pour le compiler, ça passe sans problème, mais il ne veut pas faire le save_program ... ça me donne fail !!! Je ne comprend pas pourquoi, C'est bizarre ça... Est-ce que vous auriez une idée ?
    Merci beaucoup
    compile(train),save_program('train.sav').
    Ceci a l'air de marcher:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    compile('c:/documents and settings/.../program.pl'),
    save_program('c:/documents and settings/.../program.sav').
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2002
    Messages : 57
    Points : 23
    Points
    23
    Par défaut
    Ben non, ça fonctionne pas.. je comprend pas pourquoi ...

    Tu crois que c'est parce que j'ai la version SICStus 3 : #5: 1996 Oct 15

    Parce que le compile fonctionne sans problèmes, mais c'est le save_program qui me met "no"...

  12. #12
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    C'est vrai que c'est bizarre. C'est la version 3.combien ?
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2002
    Messages : 57
    Points : 23
    Points
    23
    Par défaut
    Ben y'a écrit SICStus Prolog v.3 #5, for Win32...
    J'ai bien peur que ce soit une version très vieille et que mon université n'a pas acheter de nouvelle versions... et du coup, ça doit être pour ça que mon sicstus.h n'a pas l'air d'avoir tout et que le save_program fonctionne pas !!!
    Parce que sinon, je ne vois pas pourquoi ...

  14. #14
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Oui, ça pourrait venir de là.

    En fait, je ne sais pas si "1996 Oct 15" correspond à la date de version de Prolog ou à la date d'achat de la licence. Il se pourrait bien que ce soit la date de la version, malheureusement.
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2002
    Messages : 57
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par pcaboche
    Oui, ça pourrait venir de là.

    En fait, je ne sais pas si "1996 Oct 15" correspond à la date de version de Prolog ou à la date d'achat de la licence. Il se pourrait bien que ce soit la date de la version, malheureusement.
    Bon, à mon avis, mon problème venait de là, parce que je viens de télécharger la dernière version d'évaluation de sicstus, et ça fonctionne très bien le save_program !!!!

    Bon, je vais continuer d'essayer de faire fonctionner cet exemple maintenant, c'est pas gagné, mais bon !!! Merci pour vos conseils en tout cas...

    NB : Grrrrr, vive l'université qui a des version de 1996 !!!!!!!!

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2002
    Messages : 57
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par Trap D
    Tu peux écrire des programmes C ou des Dll qui appellent swi-prolog.
    swi-prolog fournit un compilateur c "plld".

    Bon, je me suis décidée à m'orientée de ce coté là...

    En effet, j'ai trouvé sans problème... j'ai trouvé un site où ils donnent même un programme simple sur les nombres premiers avec un fichier premier.cpp et premier.pl .. http://www.montefiore.ulg.ac.be/~van...terfacage.html

    Pour compiler, sous linux, je n'ai eu aucun problème avec plld qui a du trouvé le compilateur c par défaut... je l'ai lancé tout simplement en mettant :
    plld -o output premier.cpp premier.pl

    Mon problème se situe sous Windows (et oui, on nous a obligé à utiliser windows)....

    Donc nous avons choisi de travailler avec le compilateur MinGW

    Donc sous windows, quand je lance la même ligne de compilation (plld -o output.exe premier.cpp premier.pl), il ne veut pas car il ne trouve pas 'cl.exe'...

    Logique, donc je lui dit que j'utilise le compilateur de mingw, en notant :
    plld -o output.exe -c++ mingw32-c++ premier.cpp premier.pl

    Et là, il me fait deux erreurs principales :
    1. mingw32-g++.exe: /MD: No such file or directory
      mingw32-g++.exe: /GX: No such file or directory

      Je ne comprend pas pourquoi il cherche ces dossiers... on dirait qu'il les cherche comme si j'utilisais cl.exe... je ne comprend rien...

    1. premier.cpp:11:17: stdio: No such file or directory

      En gros, il ne veut pas trouver mon dossier d'include qui est dans mingw alors que j'ai essayé des tonnes de choses, entre autres :

      plld -c++ mingw32-g++.exe -Dinclude-directory C:/MinGW/include/ premier.cpp premier.pl

      plld -c++ mingw32-g++.exe -cc-options,-I C:/MinGW/include/ premier.cpp premier.pl

      Mais il n'arrive jamais à trouver ce dossier d'include...


    Si vous avez une idée, elle serait la bienvenue... je n'ai vraiment pas trouvé grand chose sur le net... peu de personne utilisent plld avec un autre compilateur... je ne suis même pas sure que ce soit vraiment possible...

    Merci d'avoir lu tout ça...

    Bon après midi

  17. #17
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Bizarre, je n'ai eu absolument aucun problème sous Windows, (j'utilise Visual C).
    Je me suis mis dans le répertoire bin de pl et j'ai utilise cette ligne de commande
    plld -o cptbon.exe cptbon.c cptbon.pl
    Tous les fichiers sont mis dans bin (je sais, ce n'est pas très propre, mais il suffit je pense d'ajouter les chemins dans le path).
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2002
    Messages : 57
    Points : 23
    Points
    23
    Par défaut
    Ben apparement, ça fonctionne avec visual C mais pas avec mingw...
    Je ne comprend pas pourquoi il ne veut pas tourner... C'est vraiment bizarre...

  19. #19
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    J'ai essayé de mettre le chemin de bin dans le path, ça compile mais le programme ne fonctionne pas, il doit absolument être dans bin, je ne comprends pas pourquoi.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2002
    Messages : 57
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par Trap D
    J'ai essayé de mettre le chemin de bin dans le path, ça compile mais le programme ne fonctionne pas, il doit absolument être dans bin, je ne comprends pas pourquoi.

    Ah, ben ça me rassure au moins... je ne suis pas la seule à qui ça arrive... C'est vraiment très bizarre !!!!

Discussions similaires

  1. [HTML] formulaire gérer les espaces dans un champs texte
    Par renofx1 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 12/01/2006, 15h17
  2. Réponses: 5
    Dernier message: 28/11/2005, 10h52
  3. Comment gérer le grec dans MySQL ?
    Par LadyArwen dans le forum Requêtes
    Réponses: 14
    Dernier message: 27/01/2005, 10h24
  4. Comment gérer plusieurs icones dans son exécutable ?
    Par declencher dans le forum Langage
    Réponses: 5
    Dernier message: 15/10/2003, 11h49
  5. gérer les jpg dans une fenetre directdraw???
    Par Anonymous dans le forum DirectX
    Réponses: 1
    Dernier message: 14/06/2002, 14h39

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