Bonjour à tous,
Ce n'est pas vraiment un problème que je vais soumettre à la communauté (bien que résolu seulement partiellement) mais plutôt un conseil sur l'utilisation de la "Foreign Langage Interface" de SWI-Prolog.
Comme ce dernier semble être le plus usité des Prologs, et que j'ai passé quelques jours à bien me creuser la tête pour trouver une solution, je me suis dit que cela pourrait être trés profitable de faire partager mes résultats.
Le but de la manoeuvre était simplement d'étendre les prédicats existant en utilisant une bibliothèque C externe.
Cependant impossible de compiler le code source de la DLL d'exemple du manuel SWI. Aprés de longs tâtonnement, j'en ai déduit ceci :
- la bibliothèque libpl.lib n'aime pas du tout être utilisée avec mingw (& cygwin ???) : symbol ...Thunk... manquant, toujours pas trouvé de solution
- par contre avec VC++ 6 on arrive à compiler
- de préférence utiliser plld pour compiler *ET* lier la DLL (ajoute tout seul les autres bibliothèques nécessaires)
- le chargement de la DLL se fait par le prédicat "load_foreign_library/1".
Voilà les quelques pistes en attendant les éventuels commentaires.
Etonnant tout de même qu'un langage libre se lie plus facilement avec un compilateur commercial qu'avec un compilateur libre (surement un pb. de jeunesse et/ou portabilité).
Partager