2

如何使用 deploytool 从 .m 函数获取可执行文件并使用它?

比如说,我有一个 .m 名称 foo,这是代码:

function product = foo(array_a,array_b)
product = array_a.*array_b
end

现在我使用 deploytool 生成一个 foo.exe,如何将它与相同的工作区变量 AKA array_a 和 array_b 一起使用?

问候

4

2 回答 2

3

我只需为可执行文件提供变量即可使您的代码正常工作。

我先跑了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 示例。我使用该链接来帮助我让它工作。)

然后,只需执行该功能。

./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*")解决了这个问题。然后,我更正了在调用可执行文件时作为第一个参数提供的库路径。

于 2013-05-06T04:09:59.747 回答
1

您可以使用eval将字符串转换为其他数据类型,例如数组。有关更多详细信息,请参见此处

此外,如果您想保护源代码, pcode可能是另一种方式。

于 2013-05-06T02:57:33.210 回答