Thank you for the explanation Chris - that helps a lot. Using the command 'ldd' in linux I got a list of the dependencies - see below (I've built the target in Debug).
Do you see a similar list when you run dependency walker? Should I be concerned that it appears that both the release and debug versions of the libSimTK libraries appear to be dependencies? If thoughts on how to fix it?
In case this is relevant, initSystem is now working just fine, but the program later dies when I try to set the state. Details below.
Thank you again for your help!
Matt
----------------------------------------
Seemingly duplicated dependencies
----------------------------------------
libSimTKsimbody.so.3.6 libSimTKsimbody_d.so.3.6
libSimTKcommon.so.3.6 libSimTKsimbody_d.so.3.6
libSimTKmath.so.3.6 libSimTKmath_d.so.3.6
libSimTKsimbody.so.3.6 libSimTKsimbody_d.so.3.6
----------------------------------------
Full list of dependencies
----------------------------------------
linux-vdso.so.1 => (0x00007ffc2b5f2000)
libosimTools_d.so => /home/mjhmilla/dev/opensim-core-install/lib/x86_64-linux-gnu/libosimTools_d.so (0x00007f5c24469000)
libosimAnalyses_d.so => /home/mjhmilla/dev/opensim-core-install/lib/x86_64-linux-gnu/libosimAnalyses_d.so (0x00007f5c24159000)
libosimActuators_d.so => /home/mjhmilla/dev/opensim-core-install/lib/x86_64-linux-gnu/libosimActuators_d.so (0x00007f5c23d58000)
libosimSimulation_d.so => /home/mjhmilla/dev/opensim-core-install/lib/x86_64-linux-gnu/libosimSimulation_d.so (0x00007f5c23369000)
libosimCommon_d.so => /home/mjhmilla/dev/opensim-core-install/lib/x86_64-linux-gnu/libosimCommon_d.so (0x00007f5c22f16000)
libSimTKcommon.so.3.6 => /home/mjhmilla/dev/opensim-core-install/lib/x86_64-linux-gnu/libSimTKcommon.so.3.6 (0x00007f5c229bd000)
libSimTKmath.so.3.6 => /home/mjhmilla/dev/opensim-core-install/lib/x86_64-linux-gnu/libSimTKmath.so.3.6 (0x00007f5c223b4000)
libSimTKsimbody.so.3.6 => /home/mjhmilla/dev/opensim-core-install/lib/x86_64-linux-gnu/libSimTKsimbody.so.3.6 (0x00007f5c21d29000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f5c219fd000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f5c216f7000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f5c214e0000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5c2111b000)
libSimTKsimbody_d.so.3.6 => /home/mjhmilla/dev/opensim-core-install/lib/x86_64-linux-gnu/libSimTKsimbody_d.so.3.6 (0x00007f5c204eb000)
libSimTKmath_d.so.3.6 => /home/mjhmilla/dev/opensim-core-install/lib/x86_64-linux-gnu/libSimTKmath_d.so.3.6 (0x00007f5c1fb36000)
libSimTKcommon_d.so.3.6 => /home/mjhmilla/dev/opensim-core-install/lib/x86_64-linux-gnu/libSimTKcommon_d.so.3.6 (0x00007f5c1f392000)
liblapack.so.3 => /usr/lib/liblapack.so.3 (0x00007f5c1ebf6000)
libosimLepton_d.so => /home/mjhmilla/dev/opensim-core-install/lib/x86_64-linux-gnu/libosimLepton_d.so (0x00007f5c1e977000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f5c1e773000)
libf77blas.so.3 => /usr/lib/libf77blas.so.3 (0x00007f5c1e552000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f5c1e334000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f5c1e12c000)
/lib64/ld-linux-x86-64.so.2 (0x00005599c87a2000)
libblas.so.3 => /usr/lib/libblas.so.3 (0x00007f5c1c922000)
libgfortran.so.3 => /usr/lib/x86_64-linux-gnu/libgfortran.so.3 (0x00007f5c1c608000)
libcblas.so.3 => /usr/lib/libcblas.so.3 (0x00007f5c1c3e6000)
libatlas.so.3 => /usr/lib/libatlas.so.3 (0x00007f5c1be53000)
libquadmath.so.0 => /usr/lib/x86_64-linux-gnu/libquadmath.so.0 (0x00007f5c1bc17000)
----------------------------------------
New errors on run
----------------------------------------
In case this helps, the program now makes it past initSystem, but later dies near line 210
Code: Select all
modelState->updU()[i] = generalizedVelocities.at(i);
with the complaint
EXCEPTION: createOpenSimPendulum: SimTK Exception thrown at StateImpl.h:1198:
Error detected by Simbody method State::allocateCacheEntryWithPrerequisites(): Prerequisite cache entry (2,3) has depends-on stage Time but this one would have lower depends-on stage Instance. That would mean the prerequisite could get invalidated without invalidating this one; not good.
(Required condition 'prereq.getDependsOnStage() <= earliest' was not met.)