macOS+matlab 2020b matlab_bgl工具箱使用时 MEX文件编译出错
引言
对于matlab_bgl工具箱来说,要在64 位 mac 上使用最新版本的 Matlab 进行编译时,需要使用者手动进行一些配置,在成功配置之后,决定将一系列过程整理成文,供大家参考。
解决“mex -setup”出错的问题
参考macOS+MatlabR2018b解决“错误使用mex -setup”问题(配置xcode10)。
在选择安装的xcode版本的时候,一定要注意与Matlab版本对应的compile编辑版本,可以从System Requirements and Supported Compilers找到对应的版本,例如我的电脑安装的是MatlabR2020b,则需要下载 xcode10.x / xcode11.x。
配置完成之后,输入“mex -setup”,出现
则mex编译设置成功。
解决“maci64”文件编译出错的问题
不管是之前工具包中存在“maci64”结尾的文件但是运行出现问题的,或者是本来就没有的,都可以采用以下的方法进行更新。
参考:compiling for maci46.
本人出现的问题是:
6): Library not loaded: @loader_path/libmex.dylib
Referenced from:
/Users/…/matlab_bgl_all_sp_mex.mexmaci64
Reason: image not found.
具体步骤为:
1.下载boost 1.36.0, 下载链接Boost Version History;
2.将boost_1_36_0/boost/graph中的所有’next(’ 改成 ‘boost::next(’,可以利用Sublime Text 3实现(下载链接Download):
此时会将./boost/graph/push_relabel_max_flow.hpp:430 中的‘topo_next(n)’也改变了,因此需要手动打开push_relabel_max_flow.hpp文件,找到430行,把‘topo_boost::next(n)’改回‘topo_next(n)’。
如果后续运行仍出现以下问题的话:
继续打开./yasmic/boost_mod/is_straight_line_drawing.hpp:188,修改’next(’ 为 ‘boost::next(’。
3.在终端中运行以下命令以创建新的compile-macosx-intel-64-large.sh
#!/bin/bash -e
BOOST_DIR=${HOME}/dev/lib/boost_1_36_0/
注意BOOST_DIR需要改成自己的boost所在路径
YASMIC_DIR=.../matlab_bgl/libmbgl/
YASMIC_DIR需要改成matlab_bgl中yasmic文件夹所在位置
source ccfiles.sh
OFILES=`echo ${CCFILES} | sed -e 's/\.cc/\.o/g'`CFLAGS="-O2 -arch x86_64 -DMATLAB_BGL_LARGE_ARRAYS -fPIC -c -I${BOOST_DIR} -I${YASMIC_DIR}"
#CFLAGS="-g -W -DMATLAB_BGL_LARGE_ARRAYS -fPIC -c -I${BOOST_DIR} -I${YASMIC_DIR}"function echocmd {echo $@$@
}for file in ${CCFILES}; doechocmd g++ $CFLAGS $file
doneechocmd ar rc libmbgl-macosx-intel-64-large.a ${OFILES}echocmd rm ${OFILES}
理论上此时会在…/matlab_bgl/libmbgl/中创建新的libmbgl-macosx-intel-64-large.a:
4. 打开…/matlab_bgl/private/compile.m,添加以下代码至switch循环中:
case 'MACI64'libname = 'mbgl-macosx-intel-64-large';large_arrays = 1;
5. 接下来的步骤,需要在终端中运行
cd .../matlab_bgl/libmbgl
sh compile-macosx-intel-64-large.sh
但此时本人文件夹中并未存在compile-macosx-intel-64-large.sh文件,因此是直接在Matlab中运行compile.m,也编译成功了。
由此完成mex编译maci64文件工作,matlab_bgl工具箱可以正常工作。
macOS+matlab 2020b matlab_bgl工具箱使用时 MEX文件编译出错相关推荐
- matlab编译错误怎么查找,matlab - Matlab mex文件编译错误-“未启用SSE2指令集” - 堆栈内存溢出...
在Matlab中编译mex文件的工具箱时,出现以下错误: In file included from /home/josh/Desktop/Project/code/toolbox/channels/ ...
- mex文件用matlab能打开吗,matlab中mex文件编译运行的问题
我运行的时候出现了这样的问题怎么解决??? >> mex -setup Please choose your compiler for building external interfac ...
- matlab中 mcc、mbuild和mex命令详解
先简单的说说mcc.mbuild和mex到底怎么回事: mcc将M文件转换成C/C++文件和相应的MEX包裹文件(需要Matlab编辑器),但在特定条件下可以自动调用mbuild或者mex mex将C ...
- matlab建立mex,手把手教你在VC++中建立MEX文件及调试
在Visual C++中建立MEX文件及调试 在Matlab环境中可以方便的编辑MEX文件,而编译MEX文件只要一句mex命令,所以一般不需要VC++环境来建立MEX文件.但对于大型的MEX程序,可能 ...
- MATLAB中调用MEX文件相关的介绍
目标:简要介绍MEX文件与MATLAB之间的关系 文章目录 目标:简要介绍MEX文件与MATLAB之间的关系 1. 什么是MEX文件? 2. MATLAB中什么时候会用到MEX文件? 3. 如何在MA ...
- matlab中的libsvm怎么录入数据啊,LibSVM在MATLAB中使用时的几个问题
在科研中需要用到支持向量机(Support Vector Machines, SVM)来进行分类,而目前比较成熟的用于实现SVM的软件包则首推LibSVM.LibSVM目前的版本已经能直接在MATLA ...
- Matlab imshow(f,G)函数使用时出现错误
imshow(f,G)使用时出现错误 ① imshow(h,128) 错误使用 imshow>preParseInputs (line 467) IMSHOW 语法无效. 出错 imshow ( ...
- MATLAB安装机器人学工具箱
一.最新版本 10.3.1机器人工具箱 安装教程 1.工具箱下载地址 http://petercorke.com/wordpress/toolboxes/robotics-toolbox 2.确定下载 ...
- 使用MATLAB贝叶斯工具箱(BNT),进行吉布斯采样(Gibbs Sampling)之前需要做的编译工作...
使用BNT(Bayesian Networks Toolbox)进行推断时,内置了吉布斯采样算法(即gibbs_sampling_inf_engine),但是如果调用这个引擎做推断会报错.报错内容大概 ...
最新文章
- Hibernate Validation与Spring整合各注解的用法Demo
- jenkins-为什么要持续集成
- 成功解决ValueError: If using all scalar values, you must pass an index
- 23种设计模式C++源码与UML实现--策略模式
- css grid布局_如何使用CSS Grid重新创建Medium的文章布局
- appcrash事件java,java – SpringBoot应用程序崩溃
- 校园招聘最重要的有2点 第一个是不要抱死一家公司
- Dom-to-image
- 卢伟冰宣布Redmi新机即将发布 疑为Redmi 8A
- android 音乐游戏,手速党的胜利 -- 音乐游戏专题 #iOS #Android
- 5. Web 的结构组件
- jquery中防止和其他JS框架冲突的办法
- 图形化操作工具DIGITS 6.1的安装与运行
- 如何用ps做计算机二级报名照片,等级考试照片PS教程
- 用python计算个人所得税计算器_教你使用Python实现新个税计算器
- 未群发消息接腾讯服务器吗,腾讯企点如何群发消息 腾讯企点群发消息方法教程...
- WebSphere管理控制台端口号如何查看
- 虚拟机VM利用U盘重装系统
- Opencv---通过形态学操作提取水平和垂直线
- OA行业产品同质化寒冰如何消融?