Consulting a Prolog Source Code from within VS2008 IDE

7fe47f0ab45e213f1cfdc24d0b07eb7b
0
HJoshy 101 Mar 09, 2010 at 15:25

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,

3 Replies

Please log in or register to post a reply.

99f6aeec9715bb034bba93ba2a7eb360
0
Nick 102 Mar 09, 2010 at 16:46

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.

7fe47f0ab45e213f1cfdc24d0b07eb7b
0
HJoshy 101 Mar 09, 2010 at 17:07

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?

A8433b04cb41dd57113740b779f61acb
0
Reedbeta 168 Mar 09, 2010 at 17:15

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.