I could reproduce with simple code example from swi-prolog

Running following on attached example raise the error:

swipl-ld -o test.exe test.c test.pl
./test.exe pi/2

Running the same on an Ubuntu with swi-prolog 7.6.4 works.


Le jeu. 20 déc. 2018 à 19:26, olivier sallou <[email protected]> a
écrit :

> Executing cmd directly seems to work:
>
> swipl
> Welcome to SWI-Prolog (threaded, 64 bits, version 7.7.25)
> SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software.
> Please run ?- license. for legal details.
>
> For online help and background, visit http://www.swi-prolog.org
> For built-in help, use ?- help(Topic). or ?- apropos(Word).
>
> ?- use_foreign_library(foreign(process)).
> true.
>
>
> Logol program is compiled with swipl-ld , so problem seems to occur with
> compiled version only.
> Older compilations/tests (with older swipl version?) used to work.
>
> --
>
> gpg key id: 4096R/326D8438  (keyring.debian.org)
>
> Key fingerprint = 5FB4 6F83 D3B9 5204 6335  D26D 78DC 68DB 326D 8438
>
>

-- 

gpg key id: 4096R/326D8438  (keyring.debian.org)

Key fingerprint = 5FB4 6F83 D3B9 5204 6335  D26D 78DC 68DB 326D 8438

Attachment: test.pl
Description: Perl program

#include <stdio.h>
#include <SWI-Prolog.h>

#define MAXLINE 1024

int
main(int argc, char **argv)
{ char expression[MAXLINE];
  char *e = expression;
  char *program = argv[0];
  char *plav[2];
  int n;

  /* combine all the arguments in a single string */

  for(n=1; n<argc; n++)
  { if ( n != 1 )
      *e++ = ' ';
    strcpy(e, argv[n]);
    e += strlen(e);
  }

  /* make the argument vector for Prolog */

  plav[0] = program;
  plav[1] = NULL;

  /* initialise Prolog */

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

  /* Lookup calc/1 and make the arguments and call */

  { predicate_t pred = PL_predicate("calc", 1, "user");
    term_t h0 = PL_new_term_refs(1);
    int rval;

    PL_put_atom_chars(h0, expression);
    rval = PL_call_predicate(NULL, PL_Q_NORMAL, pred, h0);

    PL_halt(rval ? 0 : 1);
  }

  return 0;
}

Reply via email to