From: rcbc@honir.cs.cornell.edu (Robert Cooper)
Subject: Re: ISIS++
Reply-To: rcbc@cs.cornell.edu
Organization: Cornell Univ. CS Dept, Ithaca NY 14853
Date: Mon, 14 Dec 1992 04:27:55 GMT

In article <1992Dec4.103826.23779@newstand.syr.edu> ibashir@cat.syr.edu (Imran Bashir) writes:

   I am trying to compile the demo programs provided with ISIS++ and 
   have encountered the following errors.

ISIS++ is the result of a research project at Cornell that finished about a
year ago. No-one involved in the implementation remains at Cornell. Imran
and I have looked at the errors he got and here's the summary. Two of them
appear to be Isis errors.

   (I am using a sparcstation, SUN's c-compiler and ISIS3.0 library)

Imran is also running ISISV3.0.5 and gcc 2.3.1.

   -------------------------------------------------------------------------

   compiling dbserver.C
   rm -f dbserver.o
   isis++gen ../../demos/dbserver.C -o /usr/tmp/dbserver.C
   CC -c -g -I/usr/local/include/CC -I../../include -I/vol/isis/include -I/usr/local/lib/g++-include /usr/tmp/dbserver.C
   In file included from /vol/isis/include/isis.h:228, from ../../include/isis++.h:49, from /usr/tmp/dbserver.C:29:
   /vol/isis/include/cl_task.h:184: `rtn' undeclared, outside of functions
   /vol/isis/include/cl_task.h:184: parse error before `*'

The particular line in question in cl_task.h is:

    int    ISISCALL1RET1( int (*rtn)(), VOID *arg);

Removing the (strictly unnecessary) parameter names fixes the problem:

    int    ISISCALL1RET1( int (*)(VOID *), VOID *);

Now to the next problem:

   ../../demos/dbserver.C: In method Serv::Serv ():
   ../../demos/dbserver.C:90: `v_routine_msgs' undeclared (first use this function)
   ../../demos/dbserver.C:90: (Each undeclared identifier is reported only once
   ../../demos/dbserver.C:90: for each function it appears in.)
   ../../demos/dbserver.C:90: parse error before `MessDispIFID_UPDATE'
   ../../demos/dbserver.C:90: parse error before `MessDispIFID_QUERY'
   *** Error code 1
   make: Fatal error: Command failed for target `dbserver.o'

This is an error in ISISV3.0.5-V3.0.7 for C++ programmers, and has been
reported by one other user too. The following define should be added to
isis.h just after the definition of v_routine_vs (around line 118 in the
V3.0.7 release): 

   typedef void (*v_routine_msgs)(message*);

At the same time you can edit the following definition of isis_entry, also
in isis.h (line 664 in V3.0.7):

        int	isis_entry	(int entry, v_routine_vs, char *rname);

changing it to:

	int	isis_entry	(int entry, v_routine_msgs, char *rname);

Both these fixes will appear in V3.0.8 when it is released sometime in the
new year. Back to Imran's posting:

   Here I would like to mention that if I use the include files from the
   old ISIS2.1 library, then it compiles ok but gives errors at link time.
   The error that it gives at link time is as follows

   -------------------------------------------------------------------------
   linking dbserver
   CC -o dbserver dbserver.o libclass.a -lm /usr/local/ISIS/clib/libisis1.a /usr/local/ISIS/clib/libisis2.a /usr/local/ISIS/mlib/libisism.a 
   ../../src/isis++.C:280: Undefined symbol pl_create(address *, address *) referenced from text segment
   ../../src/isis++.C:297: Undefined symbol pl_create(address *, address *) referenced from text segment
   *** Error code 1
   make: Fatal error: Command failed for target `dbserver'
   -
   Compilation exited abnormally with code 1 at Fri Dec  4 10:24:46
   -------------------------------------------------------------------------

   Imran Bashir..

We don't really support V2.1 anymore, although of course its still freely
available from Cornell by FTP. However the above problem, if I remember
correctly is caused by a missing   

     extern "C" {  ..... }

construct surrounding the pl_create declarations in the V2.1 include files.

                   -- Robert Cooper
--
-- 
Newsgroups: comp.sys.isis