mex 命令 -g 出错(无优化)

error with the mex command -g (no optimization)

我正在尝试在脚本中混合文件。必须混合的 C 文件是在混合之前在脚本的先前步骤之一中生成的。

当我在脚本中使用以下行时,一切正常,脚本成功运行。

mex (strcat(component_name,'_s_func','.c'));

但是当我在下面添加相同的行时

mex -g (strcat(component_name,'_s_func','.c'));

它给我错误

C:\PROGRA~2\MATLAB~1\BIN\MEX.PL: Error: '(strcat(component_name,_s_func,.c))' not found.

知道为什么它在使用 -g 时找不到相同的文件,而在不使用 -g 选项时却能找到吗?

确定可以使用 eval 命令执行此操作

file_name=(strcat(component_name,'_s_func','.c'));
eval(['mex -g ',file_name]);

你的语句的问题在于语法

mex -g [...]

MATLAB 假定您使用字符串参数 '-g''[...]' 调用 mex,因此它假定您的文件名为 (strcat(component_name,'_s_func','.c')) 并且不执行命令。

您可以使用您通过 eval 发布的解决方案,这样您就可以再次使用字符串 '-g''filename.c' 调用它。另一种可能性是使用语法

mex('-g',strcat(component_name,'_s_func','.c'));

因为这样命令 strcat 在调用 mex 之前真正执行了。

--

这与例如clear。您可能知道,以下语句是等价的:

clear a b c
clear('a','b','c');