mex 与 MATLAB2013a 无法识别的开关:-o

Posted

技术标签:

【中文标题】mex 与 MATLAB2013a 无法识别的开关:-o【英文标题】:mex with MATLAB2013a Unrecognized switch: -o 【发布时间】:2014-09-12 17:46:56 【问题描述】:

我正在尝试运行一个使用 mex 编译一些 c++ 代码的代码。 我已经使用 Microsoft Visual C++ 2010 设置了 mex。 但是当我执行该行时

mex -O fconv.cc -o fconv

我得到了错误

compile
    Usage: 
        MEX [option1 ... optionN] sourcefile1 [... sourcefileN] 
            [objectfile1 ... objectfileN] [libraryfile1 ... libraryfileN] 

    Use the -help option for more information, or consult the MATLAB API Guide. 




C:\PROGRA~1\MATLAB\R2011A\BIN\MEX.PL: Error: Unrecognized switch: -o. 

我用谷歌搜索了很多,但找不到任何有用的东西。如果有人可以在这里帮助我,那就太好了。我对使用 mex 的了解非常有限。

【问题讨论】:

【参考方案1】:

从R2013a docs for mex(和current version)来看,没有-o选项,但有-output

-output resultname 创建名为 resultname 的二进制 MEX 文件。自动附加适当的 MEX 文件扩展名。覆盖默认的 MEX 文件命名机制。

顺便说一句,除非您使用 -g,否则默认情况下大 O 选项 (-O) 处于启用状态。

请记住,mex 不是编译器,而是编译器的前端。它的语法与您可能用于编译器的语法大不相同。

【讨论】:

请注意:mex 曾经是 Perl 脚本 mex.pl 的前端,而后者又调用了编译器。从 R2014a 开始,这种情况发生了变化,现在它直接调用编译器(mex.exe 和内置 MATLAB 函数)。 @Amro 你确定吗?我正在运行 R2014b,使用函数语法时出现以下错误:C:\PROGRA~1\MATLAB\R2014B\BIN\MEX.PL: Error: Unrecognized switch: -outdir..。至少看起来那里还有一个MEX.PL @embert:我只是尝试在运行 Process Monitor 时编译一个示例 MEX 文件,但它根本没有触及 mex.pl 文件。我假设他们现在将其保留是为了向后兼容,以免使用 .BAT 文件而不是新的 .XML 文件破坏旧的配置系统......在我的情况下(Win8 上的 R2014b),MATLAB 首先加载库@ 987654339@,然后是libmexcmd.dll,最后直接通过cmd.exe调用Visual Studio编译器。没有执行任何 Perl 脚本... @Amro 所以你说这是因为我的版本是使用批处理文件配置的?如何从 .BAT 切换到 .XML 配置?我想它应该自己做这件事,因为它没有记录在任何地方,但不知何故它没有。也很奇怪:虽然 officially 不支持,但 R2014b 仍然与 VS2005 一起运行。 bin/win64/mexopts/ 中有 .BAT 和 .XML 文件。可能是因为这个旧的编译器没有模板,它只是利用了自己配置的.BAT。 @embert:我不知道,对我来说,上次升级我的 MATLAB 时它自动发生了。也许是因为 VS2005 旧/不受支持,因此退回到旧系统。如果您查看您的首选项文件夹 (winopen(prefdir)),您应该会看到新的 XML 配置文件:mex_*_win64.xml。旧的曾经被称为mexopts.batcompopts.bat。首先尝试运行mex -setup,否则尝试创建fresh profile(通过在启动MATLAB之前将环境变量MATLAB_PREFDIR设置为新位置)

以上是关于mex 与 MATLAB2013a 无法识别的开关:-o的主要内容,如果未能解决你的问题,请参考以下文章

matlab 解决 错误使用 mex 未找到支持的编译器或 SDK

matlab mex clang C++11线程->未定义符号错误

2013a 中的 Matlab Saveas 错误

使用 MatLab2013a 的 MacOS 10.8.4 上的 Java 错误

使用 mingw-w64 编译 mex 的链接器错误

用matlab实现图像识别的功能,提供一下思路