尝试在 MatLab 中编译 C mex 文件

Posted

技术标签:

【中文标题】尝试在 MatLab 中编译 C mex 文件【英文标题】:Trying to Compile a C mex file in MatLab 【发布时间】:2013-11-10 08:23:25 【问题描述】:

嘿,尝试在 MatLab 中编译一个 C 文件,但我收到了这个错误,我正在尝试理解它。非常感谢任何和所有指导。

>> mex BDS_unpack_mex5.c
xcrun: error: SDK "macosx10.7" cannot be located
clang: warning: no such sysroot directory: '-mmacosx-version-min=10.7'
BDS_unpack_mex5.c:17:10: fatal error: 'math.h' file not found
#include <math.h>
     ^
1 error generated.

mex: compile of ' "BDS_unpack_mex5.c"' failed.

Error using mex (line 206)
Unable to complete successfully.

【问题讨论】:

您是否设置了mex 编译器?试试&gt;&gt; mex -setup 嘿 Shai,感谢您的建议,奇怪的是,我认为这与 MatLab 外部编译器部分中设置的 OSX 版本有关。一旦我将最初读取 10.7 并下载 Xcode 的所有值更改为 10.8,一切都运行良好。 @PiersonSargent 您在哪里将 10.7 的值更改为 10.8?因为我使用的是 10.9,所以可能会出现同样的问题... 我必须四处寻找它,它是一个存在于 MatLab 文件中的 mexopts(mex 选项)文件。试试看你是否无法运行搜索。 【参考方案1】:

为了解决这个编译here或者一般的问题,我理解是这样的

$ sed -ie 's@10.7@10.9@g' /Applications/MATLAB_R2013b.app/bin/mexopts.sh

在运行之前检查你的 Sed 风格。根据comment,您需要再次编译 Xcode。等待升级...

可能相关的问题

How to ignore `mexopts.sh` when compiling MEX files for Matlab?

【讨论】:

【参考方案2】:

问题存在于 OSX 版本中,MatLab 认为我已经给出了新的 OSX 版本(小牛队),我选择安装更新。我最终找到了包含 mex 选项的文件,更改了 OSX 值以读取当前版本的 OSX,我下载了当前版本的 Xcode,瞧一切正常,我可以运行我的

mex BDS_unpack_mex5.c

这让我可以编译 mex 文件,使用里面的函数并度过美好的一天 =D

【讨论】:

以上是关于尝试在 MatLab 中编译 C mex 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Eclipse(4.20.0 版本)和 Matlab(R2021a)在 Windows 中编译 mex 函数

Matlab mex 无法构建,但 gcc 可以

Mex 文件执行中的错误,Matlab 窗口

使用 mex 在 Matlab 中编译 C++ 失败

Matlab Mex代码未编译

matlab中的plot函数怎样在c语言中实现