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.bat
和compopts.bat
。首先尝试运行mex -setup
,否则尝试创建fresh profile(通过在启动MATLAB之前将环境变量MATLAB_PREFDIR
设置为新位置)以上是关于mex 与 MATLAB2013a 无法识别的开关:-o的主要内容,如果未能解决你的问题,请参考以下文章
matlab 解决 错误使用 mex 未找到支持的编译器或 SDK
matlab mex clang C++11线程->未定义符号错误