I’m having an unusual problem with the Matlab interface. Calling Simulator.create() returns an empty sim object. I am running some simple Lumped Rate Models. The strange thing is that they ran perfectly until recently, with no changes to the core package, so I assume no changes to the MexSimulator(). Any advice?
if you are getting an empty object/array from
Simulator.create(), Matlab could not load the mex binary.
MexSimulator() in the Matlab command window. This should print some error messages.
If you have recompiled CADET, also consider the situation of this thread: Mac OS Installation
I have not recompiled, but yes it is not finding the binary for no reason I can understand. The error is as it was on the original compilation (below), but I have confirmed that the libtbb_preview.dylib is correct and in place.
model/CADET/cadet/matlab/bin/CadetMex.mexmaci64, 6): Library not
Reason: image not found
Error in MexSimulator (line 137)
obj.mexHandle = CadetMex(‘create’);
This seems strange, indeed. Let’s find out what the
rpath of the
CadetMex.mexmaci64 dynamic library is:
Please run this in the terminal in the folder of the
CadetMex.mexmaci64 file and post the results:
otool -l CadetMex.mexmaci64 | grep RPATH -A10
Ah, this looks like the answer. I moved the entire folder into a dropbox location for sharing. A path correction should fix it. Unfortunately I’m not sure how to do that.
path /Users/Andy/Desktop/CADET/cadet/lib (offset 12)
Load command 19
path /Applications/MATLAB_R2019a.app/bin/maci64 (offset 12)
Load command 20
path /Applications/MATLAB_R2019a.app/extern/bin/maci64 (offset 12)
Load command 21
path /Users/Andy/Desktop/CADET/Libs/tbb-2020.3-mac/tbb/lib (offset 12)
Load command 22
path @executable_path/. (offset 12)
I think, I was wrong in the other post. The correct
rpath should probably be
@loader_path instead of
@executable_path. Please add the
install_name_tool -add_rpath @loader_path/. CadetMex.mexmaci64
@executable_path points to the directory that contains the running binary (i.e.,
/Applications/MATLAB_R2019a.app/bin/maci64/). But we need the path relative to the directory of the
.dylib (i.e., relative to the directory of
CadetMex.mexmaci64 itself), which is given by
If this works, you should be able to move the folder around without having to change the files. I’ll also update the other post if this fixes the problem.