[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.