【问题标题】:Is it possible to execute compiled code both within and out of MATLAB environment?是否可以在 MATLAB 环境内部和外部执行编译代码?
【发布时间】:2012-05-12 20:04:36
【问题描述】:

让我解释一下我要做什么。我有一个用 Matlab 编码的应用程序,我想将它提供给 Matlab 用户和非 Matlab 用户。 所以你会说:只是编译它并部署一个可执行文件。很好。

但是部署的应用程序在某种程度上限制了你可以做的事情(非常重要的是,你不能执行其他 M 文件)所以我还想让 Matlab 用户可以从 Matlab 中启动部署的应用程序并提供这些家伙的这些高级功能。 那么有可能吗?

当然,我可以提供两个版本:A .exe 和 .m 但这不是很优雅,也许有一个很好的技巧可以做到这一点。 任何的想法?

【问题讨论】:

  • 我有些不明白:你的应用打算做什么?我的意思是,如果它试图做一些无法部署到 .exe 文件的事情,那么实际上你必须真正拥有两个不同的应用程序(不仅仅是版本)。你能提供一个你真正要求的例子吗?

标签: matlab matlab-guide


【解决方案1】:

您可以在部署的应用程序中使用eval。您还可以阅读.m 文件,因为它们只是文本。 因此,阅读文件,逐行评估,然后就可以在编译的 Matlab 程序中使用 3d 方脚本.m 文件。

您将无法以这种方式使用函数,只能使用脚本。

我唯一不确定的是它是否合法。我不能保证,您必须自己联系 Mathworks。

【讨论】:

  • 我不确定你能做到这一点。请参阅 Loren 博客:blogs.mathworks.com/loren/2008/06/19/writing-deployable-code/…
  • @Andrey - 这适用于 matlab 脚本,但 Matlab 函数?您无法逐行评估它们,因为需要先定义它们,然后才能调用它们。有可能让它工作,但你需要很多代码。您不需要编写自己的 Matlab 解析器来完成这项工作吗?
  • 逐行评估确实效率不高,而且看起来也不优雅。这基本上是重新编程一个 matlab 解释器,绕过 JIT 等等。因此,Matlab 在运行函数文件时比脚本文件快得多。我真的不想深入这个。
  • @JeromeLecoq,你能解释一下你的最终目标吗?也许我可以给你另一个解决方案。
  • 非常感谢您的帮助。我在 Matlab 中制作了一个具有插件系统的应用程序。您可以将新的 M 代码放在一个文件夹中,只要您尊重简单的语法,应用程序就可以将其拾取。它在 Matlab 中运行良好且简单,但到目前为止,如果不使插件非常违反直觉,就很难部署。
【解决方案2】:

Matlab 没有执行此操作的内置功能,并且检测某人是否安装了 Matlab 取决于操作系统。

【讨论】:

  • 拥有一个调用内置库的可执行文件和一个调用相同库的 M 文件怎么样?用户可以根据自己的需要启动 M 或可执行文件。
猜你喜欢
  • 1970-01-01
  • 2020-07-15
  • 2011-04-17
  • 2010-09-19
  • 2010-10-24
  • 2019-10-17
相关资源
最近更新 更多