macos - matlab中无效的glmnet Mex文件
问题描述
我在 macOS 10.14.5 的 MATLAB 2019a 上运行glmnet包。我还在我的笔记本电脑上安装了 Xcode。
我收到如下错误:
Invalid MEX-file '/Users/Desktop/Research/Paper Code/glmnet/glmnetMex.mexmaci64' : dlopen(/Users/Desktop/Research/Paper Code/glmnet/glmnetMex.mexmaci64,
6): Library not loaded: @loader_path/libmex.dylib
Referenced from: /Users/Desktop/Research/Paper Code/glmnet/glmnetMex.mexmaci64
我已经尝试了代码mex -setup
并得到了
MEX configured to use 'Xcode with Clang' for C language compilation.
Warning: The MATLAB C and Fortran API has changed to support MATLAB variables with more than 2^32-1 elements.
In the near future you will be required to update your code to utilize the new API.
You can find more information about this at: http://www.mathworks.com/help/matlab/matlab_external/upgrading-mex-files-to-use-64-bit-api.html.
我从mathworks中找到了一些具体的建议,mex
但我不确定这是否能解决我的问题。我在这里停了下来,因为我不确定我是否应该按照这个答案删除一些东西。
有任何想法吗?
解决方案
glmnetMex
Glmnet 下载中包含的MEX 文件在较新版本的 macOS 上看起来很复杂,因为它是在更旧版本的 macOS( OS X 10.8,根据他们的网站)上编译的,并且 DLL 库加载机制从那时起发生了变化。(它应该使用@rpath
而不是@loader_path
.)您需要自己重建 MEX 文件,或者联系 Glmnet 维护人员并要求他们提供新的构建。
要重建 MEX 文件:
- 设置 Matlab
mex -setup
以使用可以编译 Fortran MEX 文件的编译器。(我实际上不知道该怎么做。) - 在matlab中,
cd
到glmnet_matlab
目录下,,!rm glmnetMex.mexmaci64
然后运行mex glmnetMex.F
我认为这是 Glmnet 发行版中的一个错误;我已经将它报告给了 Glmnet 的维护者。
(我也可以在运行 Matlab R2019a 的 macOS 10.14.6 机器上重新下载 Glmnet 来重现此问题。)
这是另一个 Matlab 库的预构建 MEX 文件的类似问题:Library not loaded: @loader_path/libmex.dylib in matlab。下次尝试用谷歌搜索错误消息的各个部分;搜索“库未加载:@loader_path/libmex.dylib”将提出该问题。
推荐阅读
- android - Android Studio – 在 Mac OS 上通过 Wi-Fi 运行和调试构建
- python - 如何使用 Boto 自行终止正在运行的实例?
- php - 如何使用 PHP (web) 检索设备注册 ID 以避免 MismatchSenderId?
- excel - excel公式:从B列报告一个与A列匹配的值对应的值
- powershell - 通过 Powershell 脚本下载 Cmake
- azure - 使用 AAD 从 Access 链接表连接到 Azure Sql Server
- javascript - 如何在array-Javascript中的字符串开头附加一个点
- xquery - Xquery/eXist-db - 从当前文档迭代集合 +/- 3 个位置
- reactjs - 如何纠正 Redux 商店中的 React-Redux-Firebase 错误
- javascript - Python Beautiful soup 检索内部的 html 内容和元素 id