macos high sierra 10.13.1 xcode 9.2 matlab 2017b
在2017 b版本的mac matlab中运行程序时,我试图从这个link运行pmtk 3,在运行第二个命令时出现以下错误
1.步骤:
1.运行initPmtk3.m(需要几分钟)
1.运行testPmtk3.m(耗时不到一分钟)
1.运行runDemos.m(大约需要1小时)
错误:
'/Users/laxmikadariya/Documents/MATLAB/pmtk3-master/pmtksupportCopy/markSchmidt-9march2011/markSchmidt/minFunc/lbfgsC.mexmaci64':
dlopen(/Users/laxmikadariya/Documents/MATLAB/pmtk3-master/pmtksupportCopy/markSchmidt-9march2011/markSchmidt/minFunc/lbfgsC.mexmaci64,
6): Library not loaded: @loader_path/libmex.dylib
Referenced from:
/Users/laxmikadariya/Documents/MATLAB/pmtk3-master/pmtksupportCopy/markSchmidt-9march2011/markSchmidt/minFunc/lbfgsC.mexmaci64
Reason: image not found.
如何在matlab mac中解决这个问题?
我尝试将.bash_profile中的DYLD_LIBRARY_PATH设置为DYLD_LIBRARY_PATH ='/Applications/MATLAB_R2017b.app/bin/maci 64:/Applications/MATLAB_R2017b.app/sys/os/maci 64'
这不能解决问题
3条答案
按热度按时间bn31dyow1#
lbfgsC.mexmaci64
文件是预编译的,并且带有2012年的时间戳。从那时起,MacOS上的许多事情都发生了变化...:)在终端窗口中,我尝试:
正如你所看到的,它使用
@loader_path
引用MATLAB的库,这是错误的,应该是@rpath
。我尝试从MATLAB命令提示符重新编译MEX文件:
-compatibleArrayDims
选项是必要的,因为代码非常旧,并且使用int
作为数组大小(32位),而不是mwSize
(64位)。在终端窗口中,我现在看到:
这看起来好多了,它使用了
@rpath
。MEX文件现在运行了,这意味着链接器问题解决了。在同一目录下还有一个MEX文件,它也会有同样的问题。你必须同时编译它:
abithluo2#
您必须将库添加到matlab启动脚本中
/Applications/MATLAB_R2017b.app/bin/.matlab7rc.sh
.加
DYLD_LIBRARY_PATH="/Applications/MATLAB_R2017b.app/bin/maci64:/Applications/MATLAB_R2017b.app/sys/os/maci64"
然后从命令行启动matlab
/Applications/MATLAB_R2017b.app/bin/matlab
wribegjk3#
正如Cris Luengo在评论中指出的那样,标题中的错误来自于当您尝试从Matlab运行mex文件时,但尚未将其设置为通过
mex -setup
运行mex文件对于较新版本的MacOS(对我来说是13.0.1),如果你没有安装XCode,你必须从App Store安装,打开它,接受它的许可协议,然后从Matlab提示符运行
mex -setup
。