Jump to content


Consulting a Prolog Source Code from within VS2008 IDE


3 replies to this topic

#1 HJoshy

    New Member

  • Members
  • Pip
  • 5 posts

Posted 09 March 2010 - 03:25 PM

I have a Prolog file (Hanoi.pl) containing the code for solving the Hanoi Towers puzzle:

hanoi( N ):-
move( N, left, middle, right ).

move( 0, _, _, _ ):-
!.

move( N, A, B, C ):-
M is N-1,
move( M, A, C, B ),
inform( A, B ),
move( M, C, B, A ).

inform( X, Y ):-
write( 'move a disk from ' ),
write( X ),
write( ' to ' ),
writeln( Y ).


I also have a C++ file written in VS2008 IDE:

#include <iostream>
#include <string>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
#include "SWI-cpp.h"
#include "SWI-Prolog.h"

predicate_t phanoi;
term_t t0;

int main(int argc, char** argv)
{
long n = 5;
int rval;

if ( !PL_initialise(1, argv) )
PL_halt(1);

PL_put_integer( t0, n );

phanoi = PL_predicate( "hanoi", 1, NULL );

rval = PL_call_predicate( NULL, PL_Q_NORMAL, phanoi, t0 );

system( "PAUSE" );
}


How can I consult my Prolog source code (Hanoi.pl) from within my C++ code? Not from the Command Prompt - from the code, something like include or consult or compile? It is located in the same folder as my cpp file.

Thanks,

#2 Nick

    Senior Member

  • Members
  • PipPipPipPip
  • 1227 posts
  • LocationOttawa, Ontario, Canada

Posted 09 March 2010 - 04:46 PM

Did you RTFM? ;)

What do you mean with "consult"? And why are you using Prolog in the first place? It's useless except for historical academic reasons.

#3 HJoshy

    New Member

  • Members
  • Pip
  • 5 posts

Posted 09 March 2010 - 05:07 PM

I mean how can I compile my Prolog file into my C++ file?

At the command prompt, you would probably do something like:

plld -c Hanoi.pl

On VS2008 you would simply press F5 to build and compile.

How can I compile my Prolog program as well so that my C++ program can use the knowledge base in it?

#4 Reedbeta

    DevMaster Staff

  • Administrators
  • 5340 posts
  • LocationSanta Clara, CA

Posted 09 March 2010 - 05:15 PM

You'll need to find a Prolog engine architected as a C/C++-compatible library (or you'll have to find an open source one and package it up as a library yourself). Then you can embed Prolog in your own programs by linking with that library.
reedbeta.com - developer blog, OpenGL demos, and other projects





1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users