-->

如何在MATLAB编译的应用程序运行外部的.m代码? [重复](How to run exter

2019-09-17 18:07发布

这个问题已经在这里有一个答案:

  • 是否有可能都和流出MATLAB环境中执行编译的代码? 2个回答

我有一个MATLAB项目,我才能有一个可执行文件,使用MCC编译。

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

问题的关键是提供在其他developpers可以添加自己的“插件”,写在MATLAB应用程序。

我已经搜查运行外部.m文件编译MATLAB应用中(如这个线程:的方式运行从MATLAB编译功能的.m文件 ),但它并不适合在这里我的目的,altough它的正常工作使用eval( )。

但这种的eval()“绝招”是不够的,因为它不允许定义新的函数或类。 举例来说,我想外部.m文件是新类(编译自“界面”中的可执行继承)。

有没有办法将文件动态加载.M成MATALB编译成可执行文件? (即使它需要一个MATLAB许可证做这样)。

和/或者是有一些“无证MATLAB”这指的是我可以进一步研究这个特殊的话题?

问候,

Answer 1:

如果你能够创建和分发者可以执行任意.m文件编译的应用程序,用户将能够做几乎任何事情MATLAB可以做,但免费的(即使不是你的意图)。

为他们提供这种能力(即使你打算什么更多无辜的和有用的)是针对于MATLAB编译许可协议,以及MathWorks公司也采取了一些技术上的限制,使其很难做到这一点。

您可能会发现周围的一些技术限制部分的方式,但如果你给你的用户在一个插件来执行任意M-代码的能力,你就违反了许可证。

(当然IANAL)



Answer 2:

我认为,唯一的办法就是从您的编译功能做了一些系统调用,如:

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

或者你也可以使用更复杂的线路,以确保一切运行良好:

system(['matlab -nodesktop -nosplash -nodisplay -r "try, ' mFile2Launch '; end; quit"'])


文章来源: How to run external .m code in a MATLAB compiled application? [duplicate]
标签: matlab mcc