3

我有一个 MATLAB 项目,我使用 MCC 编译它以便拥有一个可执行文件。

然后我想知道外部程序员是否有可能在 .exe 中执行他的一些 .m 文件,而无需重新编译整个项目。

重点是提供一个应用程序,其他开发人员可以在其中添加他们用 MATLAB 编写的“插件”。

我已经搜索了一种在编译的 MATLAB 应用程序中运行外部 .m 文件的方法(比如这个线程:Running an .m file from a MATLAB-compiled function)但它不符合我的目的,尽管使用 eval( )。

但是这个 eval() “技巧”是不够的,因为它不允许定义新的函数或类。例如,我希望外部 .m 文件成为新类(继承自可执行文件中已编译的“接口”)。

有没有办法将 .m 文件动态加载到 MATALB 编译的可执行文件中?(即使它需要 MATLAB 许可证才能这样做)。

和/或是否有一些“未记录的 MATLAB”涉及我可以进一步调查的这个特定主题?

问候,

4

2 回答 2

1

如果您能够创建和分发可以执行任意 .m 文件的已编译应用程序,那么您的用户将能够做任何 MATLAB 可以做的事情,而且是免费的(即使这不是您的意图)。

为他们提供该功能(即使您想要更纯洁和有用的东西)违反了 MATLAB Compiler 的许可协议,并且 MathWorks 还设置了一些技术限制以使其难以做到这一点。

您可能会找到绕过一些技术限制的部分方法,但如果您让您的用户能够在插件中执行任意 m 代码,您将违反许可。

(当然是 IANAL)

于 2012-06-04T21:29:40.210 回答
0

I think that the only way is to do some system calls from your compiled function, like:

mFile2Launch='foo'; %%% or whatever input
system(['matlab -r "' mFile2Launch '"']);

or you can also use that more complicated line to make sure everything work well:

system(['matlab -nodesktop -nosplash -nodisplay -r "try, ' mFile2Launch '; end; quit"'])
于 2012-06-04T14:46:36.810 回答