MATLAB 帮助:"Unknown Mex argument '-o'"

MATLAB Help: "Unknown Mex argument '-o'"

我正在尝试 运行 提供的可变形零件模型 MATLAB 代码 here,但在 运行 编辑 demo.m 文件时我一直收到此错误。它挂断的具体线路是:

eval([mexcmd ' gdetect/fconvsse.cc -o fconv']);

eval([mexcmd ' gdetect/fconv_var_dim_MT.cc -o fconv_var_dim']);

这是一个非常流行的检测工具(在后续论文中被引用了数千次),所以它肯定不是代码本身。我 运行 在 CentOS 6.5 上的 MATLAB R2014a 上运行它。文档确实说:

The software was tested on several versions of Linux and Mac OS X using MATLAB version R2011a. Earlier versions of MATLAB should also work, though there may be compatibility issues with releases prior to 2009."

一般来说,R2014a 运行不过是旧版本的东西。有谁知道我能做些什么来解决这个问题?或者至少“-o”命令甚至指的是什么?我检查了正在编译的源代码,但找不到解析器或任何东西。

这可能是因为没有 -o 标志。但是,有一个 CAPITAL O 标志,所以 -O。这代表优化代码,以便根据您的编码获得最佳 运行 代码。然而,这已经默认启用,但有一个 -output 标志。从调用 mex 的方式来看,这可能更符合您的需求。 -output 允许您覆盖输出 MEX 文件的命名方式,而不是假设正在编译的 MEX 实现文件的名称....所以在您的情况下,这将是 fconvssefconv_var_dim_MT.

作为另一个建议,我还建议您启用详细模式,这样您就可以在编译代码时看到幕后发生的一切。这是由 -v 标志启用的。

因此,这样做:

eval([mexcmd ' -v gdetect/fconvsse.cc -output fconv']);

和:

eval([mexcmd ' -v gdetect/fconv_var_dim_MT.cc -output fconv_var_dim']);

有关 mex 编译标志的更多帮助,请参阅帮助页面:http://www.mathworks.com/help/matlab/ref/mex.html