Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Mike Lewis on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Prolog foreign-interfacing with C++

Status
Not open for further replies.

HJoshy

Programmer
Mar 9, 2010
9
GB

I have a simple Prolog source code (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 ).

This is the C++ file I have written in VS2008 that should call hanoi(5) and pass the results of Hanoi.pl back to VS2008:

#include <iostream>
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;

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?

Many thanks,
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top