[gambit-list] FFI in REPL?

Marc Feeley feeley at iro.umontreal.ca
Tue Apr 16 15:41:48 EDT 2013


On 2013-04-16, at 3:06 PM, Zhen Shen <zhenshen10 at outlook.com> wrote:

> Does the interpreter support FFI ?

The interpreter doesn't support the Gambit FFI (currently).  One workflow that works well is to put the core FFI code in a .scm file, compile it to a .o1, and then "load" it at runtime (or put it in the gambcext file or gambcini.scm file).

> If not, then how can I "embed" custom FFI definitions into gsi so that they're available in REPL??
> 
> 
> 
> shen at ubuntu:~/gambc-v4_6_7-devel$ head test.scm
> (c-declare "#include \"SDL.h\"")
> 
> ;;; SDL Constants ;;;
> (define sdl-init-timer       #x00000001)
> (define sdl-init-audio       #x00000010)
> (define sdl-init-video       #x00000020)
> (define sdl-init-cdrom       #x00000100)
> (define sdl-init-joystick    #x00000200)
> (define sdl-init-noparachute #x00100000)
> (define sdl-init-eventthread #x01000000)
> shen at ubuntu:~/gambc-v4_6_7-devel$ gsi test.scm
> *** ERROR IN "test.scm"@1.1 -- Interpreter does not support ##c-declare

Either you do as I suggest above, or you create your own version of gsi by linking your extensions.  For example (using MinGW on Windows):

% cd gsi
% echo "(define (hi) (pp 'hello))" > _extensions.scm
% ../gsc/gsc -:=.. -link -l _gambcgsi _extensions.scm _gsi.scm
% gcc -o mygsi -I../include _extensions.c _gsi.c _gsi_.c ../lib/libgambc.a libgambcgsi.a -lws2_32
% ./mygsi
Gambit v4.6.7

> (hi)
hello

Marc




More information about the Gambit-list mailing list