我试图运行提供here的可变形零件模型MATLAB代码,并且在运行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上运行它。文档确实说:
该软件使用MATLAB版本R2011a在多个版本的Linux和Mac OS X上进行了测试。早期版本的MATLAB也应该有效,尽管2009年之前版本可能存在兼容性问题。"
一般来说,R2014a可以运行旧版本的东西。有谁知道我能做些什么来解决这个问题?或者至少是' -o'命令甚至指的是?我检查了正在编译的源代码,但无法找到解析器或任何东西。
答案 0 :(得分:3)
这可能是因为没有-o
标志这样的东西。但是,有一个CAPITAL O标志,-O
。这代表优化代码,以便在给定编码的情况下获得最佳运行代码。但是,默认情况下已启用此功能,但有一个-output
标志。从mex
被调用的方式来看,这可能更符合您的需求。 -output
允许您覆盖输出MEX文件的命名方式,而不是假设正在编译的MEX实现文件的名称....所以在您的情况下,这将是fconvsse
或{ {1}}。
作为另一个建议,我还建议你启用详细模式,以便在编译代码时可以看到发生在幕后的所有内容。这是由fconv_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']);
编译标志的更多帮助,请参阅帮助页面:http://www.mathworks.com/help/matlab/ref/mex.html