From: Ioannis Tsamardinos
Subject: Calling Lisp from C++
Date: 
Message-ID: <374077A3.43501673@cs.pitt.edu>
Hello everybody.
    We'd like to call lisp functions from C++ (or Virtual Basic). How do
you think this is possible? Any links to related information is
appreciated. We have Allegro 5.0. We have thought of using DLLs,
sockets, DDE, Corba etc. Corba is certainly out of the question for cost
reasons. What do you think is the best and easier way?

    Any help will help us immensely.
    Thanks,
        Yianni

--
Ioannis Tsamardinos            http://www.cs.pitt.edu/~tsamard/
Ph.D. Student
Intelligent Systems Program    http://www.isp.pitt.edu/
University of Pittsburgh       http://www.pitt.edu/

From: Joachim Achtzehnter
Subject: Re: Calling Lisp from C++
Date: 
Message-ID: <uc90ankxte.fsf@soft.mercury.bc.ca>
Ioannis Tsamardinos <·······@cs.pitt.edu> writes:
>
> We'd like to call lisp functions from C++ (or Virtual Basic). How do
> you think this is possible? We have Allegro 5.0. We have thought of
> using DLLs,

You can call Lisp functions from a DLL using ACL5's foreign function
interface. This is documented in the file foreign_functions.html
which, on Windows, is usually installed in the directory
C:\Program Files\acl50\doc\cl. Read the section about
ff:defun-foreign-callable.

> Corba is certainly out of the question for cost reasons.

See ftp://ftp.parc.xerox.com/pub/ilu/ilu.html for a free CORBA
implementation that supports ACL5.

Joachim

-- 
·······@kraut.bc.ca      (http://www.kraut.bc.ca)
·······@mercury.bc.ca    (http://www.mercury.bc.ca)
From: Guy Footring
Subject: Re: Calling Lisp from C++
Date: 
Message-ID: <wtyaimn462.fsf@thcsv01.trafford.ford.com>
Ioannis Tsamardinos <·······@cs.pitt.edu> writes:

> 
> 
> Hello everybody.
>     We'd like to call lisp functions from C++ (or Virtual Basic). How do
> you think this is possible? Any links to related information is
> appreciated. We have Allegro 5.0. We have thought of using DLLs,
> sockets, DDE, Corba etc. Corba is certainly out of the question for cost
> reasons. What do you think is the best and easier way?
> 

I assume that you are running on a Windows based PC.  

We use Lisp as a DLL that is called from Visual Basic.  I believe that ACL
will let you save a Lisp image as a COM component, which would probably be
easier to interface to VB than using a DLL since VB essentially uses COM
datatypes internally anyway.  The project I work on uses Harlequin's LWW
which doesn't offer COM functionality so I'm only going on what I remember
when I looked at ACL a while back.  VB<->Lisp DLL works perfectly OK but
there are a few VB idiosyncrasies to work around - if you decide to go this
route I can give you some more details.

Going from C (C++?) datatypes into Lisp tends to have more direct mappings
supported so a C++<->Lisp DLL interface might be more straightforward to
write.

Whether to go for an in-process, shared address space solution (DLL,
in-process COM) or an out-of-process solution (DDE, out-of-process COM,
sockets, etc) will be at least partly determined by the problem you are
trying to solve, i.e. are you looking at something that is conceptually a
single program, or is it more along the lines of a Lisp server with possibly
multiple clients?

Hope this is of some help.

>     Any help will help us immensely.
>     Thanks,
>         Yianni
> 
> --
> Ioannis Tsamardinos            http://www.cs.pitt.edu/~tsamard/
> Ph.D. Student
> Intelligent Systems Program    http://www.isp.pitt.edu/
> University of Pittsburgh       http://www.pitt.edu/
> 
>