主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

确保编译应用程序的多平台兼容性

编译的仅包含 MATLAB® 文件的 MATLAB 代码在不同平台上是兼容的,但有少数例外情况。您可以在任何平台上运行这些文件,前提是该平台已安装 MATLAB 或 MATLAB 运行时环境。有关 MATLAB 运行时的详细信息,请参阅关于 MATLAB Runtime

以下组件只能在打包它们的同一平台上运行:

  • 包含平台特定文件的组件,除非您还包括了其他平台的文件,并使用 mcc-A 选项指定了其他平台。

  • 独立应用程序

  • Excel® 加载项和 COM 组件,只能在 Windows® 上运行。

  • Docker® 和微服务 Docker 镜像,仅可在 Linux® 容器中运行。

  • 使用 mwArray API 编译的 C++库

  • .NET 程序集,不包括使用 .NET 6.0 或 .NET Core 编译的程序集。

  • MATLAB Production Server™ 编译的可部署存档,其中包含操作系统特定的依赖项或内容,例如 MEX 文件或 Simulink® 仿真。

  • Simulink Compiler™ 工件

MEX 文件

如果您的编译后的 MATLAB 代码包含与平台相关的 MEX 文件,您可以采取以下措施使其在其他平台上运行。对于此示例,使用 matlabroot\extern\examples\mex 中的文件 yprime.c

  1. 在您想要运行应用程序的每个平台上编译一次 MEX 文件。

    例如,如果您想在 Windows 64 位平台和 Linux 64 位平台上运行该应用程序,则需要编译两次 yprime.c:先在 PC 上编译一次,获得 yprime.mexw64,然后在 Linux 64 位计算机上再次编译,获得 yprime.mexa64

  2. 创建一个名为 callyprime.m 的简单 MATLAB 函数,该函数调用 yprime

    function callyprime 
    disp(yprime(1,1:4)); 
    

  3. 在一个平台上编译该软件包,然后使用 mcc-a 选项或 compiler.build 函数的 AdditionalFiles 选项来包含在其他平台上编译的 MEX 文件。确保 Linux MEX 文件与 Windows MEX 文件位于同一文件夹中。

    例如,如果您在 Windows 计算机上创建一个 Java® 包,并且要确保该包可以在 Linux 64 位平台上运行,则应包括 Linux MEX 文件 yprime.mexa64

    mcc -W 'java:myComp,myClass' callyprime.m -a yprime.mexa64
    这里无需使用 -A 明确包含 glnxa64 架构,因为依赖关系分析过程会检测到 Linux MEX 文件并启用该平台。

提示

如果您不确定您的申请中是否包含 MEX 文件,请执行以下操作:

  1. 使用 -v 选项运行 mcc 以列出 MEX 文件的名称,或者在 Verbose 函数中启用 compiler.build 选项。

  2. 从目标操作系统上安装的 MATLAB 版本中获取这些文件的适当版本。

  3. 通过运行带有 -a 选项的 mcc 将这些版本包含在存档中,或者使用 AdditionalFiles 函数中的 compiler.build 选项。

MATLAB 工具箱

在 MATLAB 桌面环境中执行时可跨平台无缝运行的工具箱功能在部署后将继续跨平台无缝运行。但是,如果某个工具箱功能设计为在特定平台上运行,那么部署后该功能将仅在该特定平台上运行。例如,Data Acquisition Toolbox™ 的功能仅在 Windows 上运行。

Java JAR 文件

Java JAR 文件是平台独立的。但是,如果您向软件包添加了操作系统特定的依赖项或内容(例如 MEX 文件或 Simulink 仿真),则生成的存档仅限于兼容系统。您可以使用 mcc-A 选项来覆盖限制。

MATLAB Compiler SDK™ 生成的 JAR 文件已经过测试,可以在 MATLAB 支持的平台上运行。有关详细信息,请参阅 MATLAB 平台路线图。

Web App

在大多数情况下,您可以在一个平台上生成 Web App 存档(.ctf 文件),并部署到在任何其他受支持平台上运行的服务器上。除非您向应用程序添加特定于操作系统的依赖项或内容(例如 MEX 文件或 Simulink 仿真),否则生成的存档是与平台无关的。

另请参阅

主题

外部网站