[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: /bin/ld: Unsatisfied symbols: with swarm-960110 and my apps
From: |
Rick Riolo |
Subject: |
Re: /bin/ld: Unsatisfied symbols: with swarm-960110 and my apps |
Date: |
Fri, 12 Jan 1996 08:52:41 -0500 (EST) |
Manor (etal),
thanks very much for the temp solution to allow me to use
the new swarm with my old kludge to support batch jobs.
(Actually it was a kludge borrowed from apps/grid/mousetraps.m.
I don't fully understand why that app still links ok in the
new version, but I don't necessarily need to understand!)
anyway, re my second question. Let me be a little more clear
about what I was doing and can't do (the same way) now.
(Note that I always suspected there was a better way to do this,
but I decided just to do this kludge to get on with it.)
In main.m I used to have:
// run the simulation
do {
activityStatus = [swarmActivity run];
} while (activityStatus != Completed && !Halt() );
Then I had the function Halt() do some appropriate tests
to decide when the batch job should stop.
(Of course I could have also done this by send a message to
a method in my Model object, but you know about old dogs....)
Anyway, in the new swarm, the above is replaced with
[swarmActivity run];
Thus there is no explicit place for me to do my own side
test to stop the execution.
So....my question is, how should I do this now?
I imagine I should add an invocation of a method to do the
test in my schedules somewhere. But what should that
method do when it decides its time to halt?
I imagine there must be some message I can send to something
(eg swarmActivity?) to tell it to stop the run.
Maybe I can find it in the swarmlibs...I was hoping someone
could easily save me that foray.
thanks again for the quick fix to these problems.
- r
Rick Riolo address@hidden
Program for Study of Complex Systems (PSCS)
1061 Randall Lab University of Michigan
Ann Arbor MI 48109-1120
http://pscs.physics.lsa.umich.edu/rlr-home.html
On Thu, 11 Jan 1996, Nelson Minar wrote:
> Date: Thu, 11 Jan 96 16:50:34 MST
> From: Nelson Minar <address@hidden>
> To: address@hidden
> Cc: address@hidden
> Subject: Re: /bin/ld: Unsatisfied symbols: with swarm-960110 and my apps
>
> >I installed the new swarm with no problems.
> >The apps all run fine. (However, the QUIT button doesn't
> >quit, it does nothing, for axelcult, market, and bondblocks.)
>
> Those three applications are still not running schedules - we've got
> so many apps now, keeping them all up to date is a chore.
>
> >Then I tried to remake one of my own little test template apps...it
> >doesn't really do anything. Note that this app does not use the control
> >panel.
>
> >/bin/ld: Unsatisfied symbols:
> > probeLibrary (data)
> > swarm_object_create_probe_display (code)
> >*** Error code 1
>
> sigh, I was afraid of that (Manor, you listening?) The problem is that
> those symbols are defined in libsimtools.a, but aren't referenced
> until libswarmobject.a, which is later. The relevant file is
> simtools.o: if your app uses initSwarm() then you force a link of that
> .o file.
>
> The workaround for now, is to force a link of the .o, maybe by doing
> void * p = initSwarm;
> in your code somewhere. Either that, or use initSwarm(). I'd like to
> not have this sort of backward dependency in the libraries, so it
> might be fixed yet. probeLibrary belongs in some part of libswarmobject.
>
> >1. Why is it trying to find and not finding those probe related
> > things? I don't actually use probes in this little app.
>
> All swarm objects currently have a magic function that makes a probe
> display, so even if you don't use them it gets linked in. We're not
> sure yet if this is a good idea.
>
> >2. How do I tell swarm to call a BOOL function of mine.
> > I once tried using [swarmActivity setBreakFunction: myfn]
> > but that didn't seem to work. (Maybe I didn't do it right...)
> > I ended up putting a call to it in the while ( )
> > in the explicity loop for running swarm, but now that loop
> > is gone!
>
> break functions are something else. You can either wrap your function
> call up in an object, or use the new createActionCall, which is for
> calling functions.
>