【问题标题】:How can I package a MATLAB application that utilises toolboxes?如何打包使用工具箱的 MATLAB 应用程序?
【发布时间】:2013-11-08 02:36:29
【问题描述】:

我想在 MATLAB 中打包一个应用程序供其他团队使用。 他们将拥有适当版本的 MATLAB 来运行此应用程序,但他们可能不一定拥有该应用程序使用的所有工具箱的许可证。

有没有办法将工具箱“捆绑”到应用程序中,这样它们就不需要昂贵的许可证来运行它?

如果没有,是否可以以不同的方式创建独立/许可独立的 MATLAB 应用程序?

编辑:其中一些应用程序可能具有 GUI 和命令行界面。

【问题讨论】:

    标签: matlab matlab-deployment matlab-compiler matlab-coder


    【解决方案1】:

    要生成可由 MATLAB 运行的代码,您需要 MATLAB Codercodegen 命令将生成可在 MATLAB 中运行的可执行文件。 MathWorks 的 Loren 在产品上有 nice blog post

    Here is an example of how to use codegen 从 MATLAB 代码创建 MEX 函数。

    一个重要的警告是,对于 MATLAB Coder,MATLAB 的完整功能还不能用于编译。这是因为生成的二进制文件不需要 MATLAB Compiler Runtime (MCR),它本质上是一个无头 MATLAB 虚拟机。相反,MATLAB Coder 生成真正独立的 C 代码,但代码生成因此受到一定限制。 Here is a description 的功能子集和here are complete lists of functions supported。根据categorical list,似乎支持大多数工具包功能。

    如果所需的功能不受支持,则有必要使用编译器生成独立库并将您自己的 MEX 接口滚动到这些库,正如 MrAzzaman 所指出的那样。另一种可能性是使用loadlibrary 函数直接加载编译器生成库,尽管我从未尝试过最后一个选项。如果您无法在 MATLAB 中成功与这些库交互,当然可以使用 MATLAB 编译器生成独立的可执行文件。 deploytool 简化了打包代码及其依赖项的过程。

    【讨论】:

    • 您提供的链接不是 100% 清楚,Matlab Coder 是否与工具包很好地配合使用?
    • @omalsa04 - 我刚刚更新了两个链接,列出了支持的功能。 Most toolkit functions are supported。除了该分类列表之外,还有subset overiew linkfunction list link
    • MATLAB Coder 也不支持 GUI
    • @am304 - 正确,没有 Java,只有 C 和 C++ 代码生成。这排除了大多数图形功能。我认为目标主要是加速和导出算法。
    【解决方案2】:

    MATLAB Compiler 听起来正是您所需要的。不幸的是,它是一个单独的工具箱,您必须购买。

    编辑:我应该注意,这会将您的 MATLAB 代码编译为应用程序/库,不是 MATLAB 代码。我相信其他团队仍然可以将它与 MATLAB 一起使用,但我认为他们无法看到代码本身。

    【讨论】:

    • MATLAB Compiler 生成的standalone 不能在MATLAB 中运行。执行此操作需要单独的 MATLAB Coder 产品。它可以从 .M 代码创建 MEX 文件。看我的回答。
    • 是的,但仅支持 MATLAB 函数的子集,并非所有工具箱都受支持。鉴于这个问题是关于在没有必要工具箱的情况下向协作者发送代码,这是一个潜在的症结所在。如果使用编译器将代码编译为共享库,则编写可编译为 MEX 函数的 C/C++ 代码将相当简单。也就是说,如果 Coder 工具箱涵盖了所有 OP 代码,那么是的,这将是一个更好的选择。
    • 感谢大家的回复。我喜欢 Matlab Coder 的工作方式,但我不认为它具有 Matlab Compiler 所具有的工具箱功能。特别是映射和并行工具箱。
    • 我刚刚在我的原始帖子中添加了一个编辑,我之前忽略了这一点,但我需要打包的一些应用程序会有 GUI。
    • @omalsa04 - Coder 不太可能很快支持这些工具箱,尤其是并行计算。所以,编译器可能是你唯一的选择。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-26
    • 1970-01-01
    • 1970-01-01
    • 2011-03-24
    相关资源
    最近更新 更多