我只需为可执行文件提供变量即可使您的代码正常工作。
我第一次运行mbuild -setup。我有你的文件,名为foo2.m:
function product = foo(array_a,array_b)
if ischar(array_a)
array_a = str2num(array_a);
end
if ischar(array_b)
array_b = str2num(array_b);
end
product = array_a.*array_b
end
唯一的区别是我确保输入被处理为数字,而不是字符串。然后,我编译:
mcc -mv -R -singleCompThread -N -p optim -p stats foo2.m
(此命令的一个很好的解释在这里:MCC example。我使用该链接来帮助我让它工作。)
然后,执行函数。
./run_foo2.sh /usr/local/MATLAB/R2011a/ 1 2
....
product =
2
确保将编译器库的位置指定为第一个参数,然后将 array_a 和 array_b 作为第二个和第三个参数。
我在尝试运行可执行文件时第一次遇到错误:error while loading shared libraries: libmwmclmcrrt.so.7.15: cannot open shared object file。我通过查找库文件路径(使用find . -name "libmwmclmcrrt.so*")解决了这个问题。然后,我更正了调用可执行文件时作为第一个参数提供的库路径。