MATLAB 错误使用 mex

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATLAB 错误使用 mex相关的知识,希望对你有一定的参考价值。

参考技术A

 要解决相关的mex命令找不到编译器,首先就需要了解相关命令调用的配置文件的路径位于:<MatlabRoot>/bin/win64/mexopts,里面有很多和和编译器以及SDK相关的环境配置文件,如图所示。

1、matlab版本问题

标明了不同类型版本的编译器配置文件,如果编译器版本的配置信息不在这个文件夹里面自然会提示找不到到文件夹。这类问题网上有很多解决方法,提供了很多相应版本的配置文件,只要将其拷到mexopts文件夹下,就解决了。

2、配置文件里面的路径和电脑的实际路径不一致  

解决方法:要仔细核对 msvc2013.xml和msvcpp2013.xml这两个配置文件的信息。

扩展资料:

通过使用MEX文件,MEX文件使得调用C函数和调用Matlab的内置函数一样方便。MEX文件是由原C代码加上MEX文件专用的接口函数后编译而成的。

MEX文件实现了一种接口,它把在Matlab中调用函数时输入的自变量通过特定的接口调入了C函数,得出的结果再通过该接口调回Matlab。该特定接口的操作,包含在mexFunction这个函数中,由使用者具体设定。 

参考资料来源:百度百科-mex文件




Matlab 错误:关于 'compile_mex;'命令

【中文标题】Matlab 错误:关于 \'compile_mex;\'命令【英文标题】:Matlab error: regarding 'compile_mex;' commandMatlab 错误:关于 'compile_mex;'命令 【发布时间】:2013-11-29 22:26:52 【问题描述】:

致各位

我正在尝试通过 Matlab 使用“mex”命令运行生成文件。然而, 当我尝试使用 'compile_mex;' 运行我的测试 .m 脚本时,我收到以下错误:

>> compile_mex
xcodebuild: error: SDK "macosx10.7" cannot be located.
xcrun: error: unable to find utility "clang++", not a developer tool or in PATH

mex: compile of ' "mex/perform_nlmeans_mex.cpp"' failed.

我已经阅读了一些可能需要编写 shell 脚本的来源 通过我需要导入的库物理添加 clang++ 实用程序 直接用matlab。有谁知道如何解决/执行这个?示例或示例外壳 脚本以及如何在内部或协调中使用该脚本的说明 如果有人能给我这个,Matlab 会很棒。谢谢!

【问题讨论】:

我仍在等待获得有关此问题的帮助。有人有这方面的经验吗? 在这里查看我的答案:Cannot run Matlab Mex files on Mac OS X Lion 10.7.5 with Xcode Version 4.3.2。 【参考方案1】:

提供了一个临时解决方法here。实际上,这相当于让 MATLAB 使用不同的 SDK(因为在 Mavericks 中删除了 10.7 SDK)。从链接:

为了清楚起见,以防其他人遇到同样的问题,我 更改了mexopts.sh 中的四行:

#            CC='xcrun  -sdk macosx10.7  clang'
        CC='xcrun  -sdk macosx10.8  clang' 

#            MW_SDK_TEMP="find `xcode-select -print-path` -name MacOSX10.7.sdk"
        MW_SDK_TEMP="find `xcode-select -print-path` -name MacOSX10.8.sdk" 

#            MACOSX_DEPLOYMENT_TARGET='10.7'
        MACOSX_DEPLOYMENT_TARGET='10.8' 

#            CXX='xcrun  -sdk macosx10.7  clang++'
        CXX='xcrun  -sdk macosx10.8  clang++'

我还必须在 matlab 内部执行“mex -setup”才能复制 mexopts.sh 到我的用户目录。

当我进行此更改时,我直接编辑 ~/.matlab/R2013a/mexopts.sh 而不是 .matlab/R2013a/mexopts.sh - 我觉得这更安全一些。它还取消了重新运行mex -setup 的要求,但这当然意味着文件可以被覆盖。

对于 10.9:

        CC='xcrun  -sdk macosx10.9  clang' 
        MW_SDK_TEMP="find `xcode-select -print-path` -name MacOSX10.9.sdk" 
        MACOSX_DEPLOYMENT_TARGET='10.9' 
        CXX='xcrun  -sdk macosx10.9  clang++'

【讨论】:

以上是关于MATLAB 错误使用 mex的主要内容,如果未能解决你的问题,请参考以下文章

Matlab 错误:关于 'compile_mex;'命令

在 Ubuntu 14.04 和 matlab 2014Ra 上使用犰狳在 mex 中出现分段错误

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

使用 mex 将一个大矩阵从 Matlab 传递到 C:Matlab 崩溃

在 MATLAB MEX 文件中使用 Thrust 的运行时链接器错误

犰狳 + Matlab Mex 段错误