Re: Eclipse External Language Interface (C)

From: Warwick Harvey <wh_at_icparc.ic.ac.uk>
Date: Fri 05 Jan 2001 12:14:27 PM GMT
Message-ID: <3A55BAA3.A4178184@icparc.ic.ac.uk>
> Although I tried I haven't been able to make it work. I am using
> Visual C++ 5.0 as my compiler and Eclipse 4.2 and 5.0

I've just given it a try, using Microsoft Visual C++ 5.0 and Eclipse 5.1
and 5.0, and it works for me.  Here's what I did --- maybe you can see
something we're doing differently.

- I created a new work space.

- I created a new Win32 Dynamic-Link Library project named convert in
this work space.

- I added convert.c to this project.

- In the link settings for this project I added eclipse.lib at the start
of the list of object/library modules.

- In the Options dialog box from the Tools menu, I selected the
Directories tab and added the include/i386_nt and lib/i386_nt
directories from the installed version of ECLiPSe to the end of the
include files and library files lists, respectively.

- I edited convert.c to remove "eclipse\" from the front of
"external.h".

- I built the project.

- I copied convert.dll to the same directory as driver.pl.

- I started TkECLiPSe.

- I compiled driver.pl (it worked).

- I called run(3), it said "Yes.".

- I called run(x), it said "number expected in run(x)".

... so it seems to work.

> I attach the Eclipse code as well as the C code.
> During linking I have linked eclipse.lib as required.
> During execution time, the working directory contains the file
> eclipse.dll as well as the dll produced by the C compiler. The .h
> files of eclipse are in .\eclipse\ directory in the working directory.

You shouldn't need the eclipse.dll file in the working directory.  It
might be best to try it with as few files/directories as possible, to
make sure it's not unexpectedly picking up the wrong version of
something by accident.

> Note that in times, when I try to compile the Eclipse file I get the
> following Tcl script error:
> 
> Error: Conversion error while reading exdr format.
> 
> followed by:
> 
> Error: Unexpected return from ec_resume: yield 99.

Yes, this is a problem with the Windows version of ECLiPSe.  I'm told it
usually happens when you try to select a menu entry or the like while
the underlying ECLiPSe engine is still working on some task.  I don't
think this is an easy thing to fix.

There have been some other problems recently which cause the same
error.  Among other things, Unicode characters (e.g. `£') appearing in a
goal were problematic, due to recent changes in the way Tcl/Tk handles
strings.  Joachim fixed a number of these problems yesterday --- if you
want an updated version of ECLiPSe including this fix, I expect to build
one in the next few days, and it will be available in the `Patch'
download directory on the ftp/http server.


Anyway, please let us know if you still can't get the external C
interface to work.

Cheers,
Warwick
Received on Fri Jan 05 12:14:28 2001

This archive was generated by hypermail 2.1.8 : Wed 16 Nov 2005 06:08:02 PM GMT GMT