swarm-support
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: howto use lispArchiver for library objects


From: Daniel Kottow
Subject: Re: howto use lispArchiver for library objects
Date: Tue, 22 May 2001 16:51:34 +0200

let me give you a "full" example:

/************** main.m ******************/

#import <simtools.h>                // ... for initSwarmBatch () 
#import "myswarm.h"

int
main (int argc, const char **argv)
{
  MySwarm *mySwarm;

  initSwarm (argc, argv);

  if ((mySwarm = 
       [lispAppArchiver getWithZone: globalZone key: "mySwarm"]) == nil)
    raiseEvent(InvalidOperation,
               "Can't find the mySwarm parameters");

  printf("myParameter = %d\n", [mySwarm getMyParameter]);

  return 0;

}


/*************** myswarm.h ******************/

#import <objectbase/Swarm.h>

@interface MySwarm: Swarm
{
  //initial parameters (IVARS)

  int myParameter;

    //end initial paramters  
}

-(int) getMyParameter;

@end

/***************** myswarm.m ****************/
#import "myswarm.h"
@implementation MySwarm

-(int) getMyParameter
{
  return myParameter;
}

@end

/******************** Makefile version 1 ****************/

ifeq ($(SWARMHOME),)
SWARMHOME=/usr
endif
APPLICATION=mytest
APPVERSION=0.1
address@hidden
OBJECTS= main.o myswarm.o


include $(SWARMHOME)/etc/swarm/Makefile.appl


main.o: main.m 
myswarm.o: myswarm.m

/****************** OUTPUT ******************/

bash(539) ~/tmp/app mytest
/usr/i486-suse-linux/bin/ld: warning: type and size of dynamic symbol
`__objc_class_name_Swarm' are not defined
myParameter = 4
bash(540) ~/tmp/app 



/**********************************************************************/



/************ Makefile version 2 **************/

ifeq ($(SWARMHOME),)
SWARMHOME=/usr
endif
APPLICATION=mytest
APPVERSION=0.1
address@hidden
OBJECTS= main.o

EXTRALIBS = -L../lib -lmylib

EXTRAOBJCFLAGS = -I../lib

include $(SWARMHOME)/etc/swarm/Makefile.appl

main.o: main.m 

/******************* Makefile lib  *****************/

ifeq ($(SWARMHOME),)
SWARMHOME=/usr
endif
LIBNAME=mylib
APPVERSION=0.1
address@hidden
OBJECTS= myswarm.o 
HEADERS= myswarm.h 

include $(SWARMHOME)/etc/swarm/Makefile.lib

LINK = $(bindir)/libtool-swarm --mode link $(CC) $(CFLAGS) -L$(libdir)
-o $@ $^ $(SWARMLIBS)


myswarm.o: myswarm.h myswarm.m


/****************** OUTPUT ******************/

bash(550) ~/tmp/app mytest
*** event raised for error: InvalidArgument
*** function: lispIn(), file: defobj.m, line: 306
> type `MySwarm' not found*** execution terminating due to error
Symbol.m:173 -[Error(c) _raiseEvent:]
Aborted
bash(551) ~/tmp/app 



I just tried to add -static to my linking options, but then i get linker
errors: 


/bin/sh /usr/bin/libtool-swarm --mode link gcc -g -O2 -L/usr/lib/swarm
-rpath /usr/lib/swarm  -o mytest main.o  -lswarm -lobjc -L../lib -lmylib
-static
gcc -g -O2 -o mytest main.o -L/usr/lib/swarm /usr/lib/swarm/libswarm.a
-L/home/daniel/swarm-2.1.1/src/space
-L/home/daniel/swarm-2.1.1/src/analysis
-L/home/daniel/swarm-2.1.1/src/simtoolsgui
-L/home/daniel/swarm-2.1.1/src/simtools
-L/home/daniel/swarm-2.1.1/src/random
-L/home/daniel/swarm-2.1.1/src/tkobjc
-L/home/daniel/swarm-2.1.1/src/tclobjc
-L/home/daniel/swarm-2.1.1/src/objectbase
-L/home/daniel/swarm-2.1.1/src/activity
-L/home/daniel/swarm-2.1.1/src/defobj
-L/home/daniel/swarm-2.1.1/src/collections
-L/home/daniel/swarm-2.1.1/src/misc -L/home/daniel/swarm-2.1.1/libobjc
-L/usr/lib -L/usr/X11R6/lib -L/usr/lib/gcc-lib/i486-suse-linux/2.95.2/
/usr/lib/swarm/libspace.a /usr/lib/swarm/libanalysis.a
/usr/lib/swarm/libsimtoolsgui.a /usr/lib/swarm/libsimtools.a
/usr/lib/swarm/librandom.a /usr/lib/swarm/libtkobjc.a
/usr/lib/swarm/libtclobjc.a /usr/lib/swarm/libobjectbase.a
/usr/lib/swarm/libactivity.a /usr/lib/swarm/libdefobj.a
/usr/lib/swarm/libcollections.a /usr/lib/swarm/libmisc.a
/usr/lib/swarm/libobjc.a -lgcc -lBLT24 -ltk8.3 -ltcl8.3 -lXpm -lpng -lz
-lX11 -lm -ldl /usr/lib/swarm/libswarm.a /usr/lib/swarm/libobjc.a
-L/usr/lib/gcc-lib/i486-suse-linux/2.95.2/ -lgcc
/usr/lib/swarm/libobjc.a -L/home/daniel/tmp/lib -lmylib -Wl,--rpath
-Wl,/usr/lib/swarm -Wl,--rpath -Wl,/usr/lib -Wl,--rpath
-Wl,/usr/X11R6/lib -Wl,--rpath -Wl,/usr/lib/swarm -Wl,--rpath
-Wl,/usr/lib -Wl,--rpath -Wl,/usr/X11R6/lib




/usr/lib/swarm/libsimtools.a(simtools.o): In function `_initSwarm_':
/home/daniel/swarm-2.1.1/src/simtools/simtools.m:82: undefined reference
to `initSimtoolsGUI'
/usr/lib/swarm/libdefobj.a(directory.o): In function
`swarm_directory_init':
/home/daniel/swarm-2.1.1/src/defobj/directory.m:1065: undefined
reference to `probeDisplayManager'
/home/daniel/swarm-2.1.1/src/defobj/directory.m:1080: undefined
reference to `ControlStateRunning'
/home/daniel/swarm-2.1.1/src/defobj/directory.m:1081: undefined
reference to `ControlStateStopped'
/home/daniel/swarm-2.1.1/src/defobj/directory.m:1082: undefined
reference to `ControlStateStepping'
/home/daniel/swarm-2.1.1/src/defobj/directory.m:1083: undefined
reference to `ControlStateQuit'
/home/daniel/swarm-2.1.1/src/defobj/directory.m:1084: undefined
reference to `ControlStateNextTime'
collect2: ld returned 1 exit status
make: *** [mytest] Error 1
bash(559) ~/tmp/app 

what i dont understand is why lisparchiver does work well on standard
objects like String, arent they dynamically linked also?
daniel

                  ==================================
   Swarm-Support is for discussion of the technical details of the day
   to day usage of Swarm.  For list administration needs (esp.
   [un]subscribing), please send a message to <address@hidden>
   with "help" in the body of the message.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]