VS2008ソリューションファイル内からのPrologソースコードのコンサルティング
-
18-09-2019 - |
質問
私はハノイタワーのパズルを解決するためのコードを含むプロローグファイル(Hanoi.plを)持ってます:
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 ).
私はまた、VS2008のIDEで書かれたC ++ファイルを持っています:
#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" );
}
どのように私はC ++コード内からの私のPrologのソースコード(Hanoi.pl)を参照することができますか?ないコマンドプロンプトから - コードから、何か含めるか、相談したり、コンパイルのような?それは私のCPPファイルと同じフォルダにあります。
おかげで、
解決
私のPrologソースコード(hanoi.pl)
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 ).
私のC ++コード(VS2008 IDEで書かれた)
#include <iostream>
#include <fstream>
#include <string>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdafx.h>
using namespace std;
#include "Windows.h"
#include "ctype.h"
#include "SWI-cpp.h"
#include "SWI-Prolog.h"
#include "SWI-Stream.h"
term_t t;
predicate_t p;
int main( int argc, char** argv )
{
argc = 4;
argv[0] = "libpl.dll";
argv[1] = "-G32m";
argv[2] = "-L32m";
argv[3] = "-T32m";
PL_initialise(argc, argv);
if ( !PL_initialise(argc, argv) )
PL_halt(1);
PlCall( "consult(swi('plwin.rc'))" );
PlCall( "consult('hanoi.pl')" );
int rval;
long n = 3;
PL_put_integer( t, n );
p = PL_predicate( "hanoi", 1, NULL );
rval = PL_call_predicate( NULL, PL_Q_NORMAL, p, t );
PL_halt( PL_toplevel() ? 0 : 1 );
}
ただ、構築し、コンパイルして実行するためにVS2008でF5キーを押し!
所属していません StackOverflow