主要内容

限制

包装MATLAB和工具箱

MATLAB®编译器SDK™万博1manbetx支持完整的MATLAB语言和几乎所有基于MATLAB的工具箱,除了:

  • 大多数预构建的图形用户界面都包含在MATLAB及其配套的工具箱中。

  • 不能直接从命令行调用的功能。

编译后的应用程序只能在运行MATLAB的操作系统上运行。但是,由MATLAB编译器SDK不能在MATLAB中使用。而且,由于MATLAB运行时和MATLAB的大小差不多,用MATLAB编译器SDK需要特定的存储内存和RAM来操作。有关系统需求的最新信息,请访问MathWorks网站

编译后的应用程序只能在其开发的相同平台上运行,但有以下例外:

  • Web应用程序,可以部署到MATLAB Web应用服务器™在任何兼容平台上运行。

  • 使用MATLAB Data API编译的c++库不包含特定于平台的文件。

  • . net Core编译的不包含特定于平台文件的程序集。

  • Java®不包含特定于平台文件的包。

  • Python®不包含特定于平台文件的包。

查看完整的列表MATLAB编译器SDK限制,访问://www.tianjin-qmedu.com/s manbetx 845products/compi万博1manbetxler/compiler_support.html

请注意

属性不支持的函数列表万博1manbetxMATLAB编译器SDK看到MATLAB Compile万博1manbetxr和MATLAB Compiler SDK不支持编译的函数

修复回调问题:缺少函数

MATLAB编译器SDK创建一个独立的应用程序,它打包您在命令行上指定的MATLAB文件。此外,它还包括打包的MATLAB文件调用的任何其他MATLAB文件。MATLAB编译器SDK使用依赖分析,确定所提供的MATLAB文件、mex文件和p文件所依赖的所有函数。

请注意

如果与p-file关联的MATLAB文件不可用,依赖关系分析就无法发现p-file依赖关系。

如果函数在MATLAB文件中被调用的唯一位置是以下任意一个函数的调用,依赖关系分析无法定位函数:

  • 回调弦

  • 将字符数组作为参数传递给函数宏指令函数或ODE求解器

    提示

    中的依赖分析程序也可以隐藏依赖函数.mat编译后的应用程序加载的文件。使用mcc -参数或% #函数编译指示标识.mat类支持的文件类或函数万博1manbetx负载命令。

MATLAB编译器SDK不在这些文本字符数组中查找要打包的函数名。

症状

您的应用程序可以运行,但是交互用户界面元素(如按钮)不能工作。编译后的应用程序发出以下错误消息:

捕获的错误消息是:在独立模式下从FEVAL引用未知函数change_colormap。

解决方案

有几种方法可以消除这个错误:

  • 使用% #函数编译指示并指定回调函数为字符数组

  • 使用函数句柄指定回调函数

  • 使用——一个选项

指定回调函数为字符数组。创建一个只在回调字符数组中指定的所有函数的列表,并使用separate传递这些函数% #函数编译指示语句。这将覆盖产品依赖关系分析,并指示它显式地包含% #函数语法。

例如,调用change_colormap函数my_test说明了这个问题。以确保MATLAB编译器SDK处理change_colormap中的函数名% #函数编译指示。

函数my_test() %图形库回调测试应用程序%#函数change_colormap峰值;p_btn = uicontrol (gcf,…“风格”,“按钮”,…'Position',[10 10 133 25],…'String', 'Make Black & White',…“回调”、“change_colormap”);

使用函数句柄指定回调函数。要指定带有函数句柄的回调函数,请使用与上面示例相同的代码,并将最后一行替换为:

“回调”,@change_colormap);

有关指定回调值的更多信息,请参阅MATLAB编程基础文档。

使用-a选项。而不是使用% #函数,可以在。pragma上指定丢失的MATLAB文件的名称MATLAB编译器SDK命令行使用——一个选择。

查找函数中缺失的函数MATLAB文件

查找应用程序中需要列在% #函数,在MATLAB文件源代码中搜索指定为回调字符数组或参数的文本函数宏指令fminbndfminsearchfunm,fzero函数或任何ODE求解器。

要查找用作回调字符数组的文本,请在MATLAB文件中搜索字符“callback”或“fcn”。这个搜索找到了所有回调图形对象定义的属性,例如uicontroluimenu.此外,它还发现图形和轴的属性Fcn,如CloseRequestFcn,也支持回调。万博1manbetx

压制警告UNIX系统

在UNIX上运行独立应用程序时,可能会出现一些警告®系统。

抑制libjvm.so警告,请为您的平台正确设置动态库路径。看到设置MATLAB运行时路径的部署

您还可以使用编译器选项- r -nojvm以设置应用程序的nojvm运行时选项,如果应用程序能够在没有Java的情况下运行。

不能使用-nojvm选项使用图形

如果你的程序使用图形,你用-nojvm选项时,将得到一个运行时错误。

无法创建输出文件

如果收到此错误,有几个可能的原因需要考虑。

无法创建输出文件文件名

可能的原因包括:

  • 其中的文件夹缺少写权限MATLAB编译器SDK正在尝试写入文件(很可能是当前工作文件夹)。

  • 所在文件夹中的可用磁盘空间不足MATLAB编译器SDK正在尝试写入文件(很可能是当前工作文件夹)。

  • 如果您正在创建一个独立的应用程序,并且已经对其进行了测试,那么可能有一个进程正在运行,并且正在阻塞MATLAB编译器SDK用新版本覆盖它。

没有MATLAB打包函数的文件帮助

如果你创建一个带有自文档在线帮助的MATLAB文件并将其打包,以下命令的结果是难以理解的:

帮助文件名

请注意

出于性能原因,MATLAB文件注释在前面被去掉了MATLAB运行时加密。

没有MATLAB运行时版本控制上Mac OS X

该特性允许您安装多个版本的MATLAB运行时在同一台机器上不支持万博1manbetxMac OS X.当您收到一个新版本的MATLAB时,您必须重新编译并重新部署所有的应用程序和组件。另外,当您安装新版本的MATLAB运行时在目标计算机上,必须删除的旧版本MATLAB运行时在安装新的之前。您只能有一个版本的MATLAB运行时在目标机器上。

旧的神经网络无法部署MATLAB编译器

加载从旧的深度学习工具箱™版本中保存的网络需要一些不可部署的初始化例程。因此,如果不进行更新,就无法部署这些网络。

例如,部署深度学习工具箱版本5.0.1 (2006b)和MATLAB编译器™版本4.5 (R2006b)在运行时产生以下错误:

???使用==>网络时出错。{1} subsasgn”层。initFcn"不能设置为不存在的函数"initwb"。Error in ==> updatenet at 40Loadobj在10 ??未定义的函数或方法'sim'的输入参数类型为'struct'。错误在==> mynetworkapp在30

在打包模式中调用带有多个参数的PRINTDLG的限制

在编译模式下,对MATLAB的调用中只能出现一个参数printdlg函数(例如,printdlg (gcf)).

在调用时,您不会收到错误printdlg与多个参数。然而,当包含多参数调用的应用程序被打包时,操作失败,并出现以下错误消息:

错误使用= => printdlg在11 printdlg只需要一个参数

将函数打包为哪一个不搜索当前工作文件夹

使用哪一个,不会导致在已部署的应用程序中搜索当前工作文件夹。此外,它可能导致不可预知的行为开放函数。

函数pathtestmyFile.mat打开('myFile.mat”)

使用下列解决方案之一作为替代方案:万博 尤文图斯

  • 使用松材线虫病函数显式指向当前文件夹中的文件,如下所示:

    ((pwd /开放myFile.mat'))

  • 而不是用一般开放功能,使用负载或用于特定文件类型的其他专用函数,如负载显式检查当前文件夹中的文件。例如:

    负载myFile.mat

  • 把你的文件包括在运行应用程序所需的文件区域的编译器应用程序,AdditionalFiles选择使用compiler.build函数,或——一个标志使用世纪挑战集团

使用c++ SetData动态调整mwArray大小的限制

你不能使用c++SetData方法动态调整大小mwArray年代。

例如,如果您正在处理以下数组:

[1 2 3 4]

你不能使用SetData将数组的大小增加到五个元素的长度。

可接受的打包文件类型

使用部署应用程序打包的有效和无效文件类型如下:

目标应用程序 有效的文件类型 无效的文件类型

独立应用程序

MATLAB MEX文件、MATLAB脚本、MATLAB函数和MATLAB类文件。这些文件必须有一个单一入口点。

受保护功能文件(每分钟文件)、Java函数、COM或. net组件以及数据文件。

库的编译器

MATLAB MEX文件、MATLAB函数和MATLAB类文件。这些文件必须有一个单一入口点。

MATLAB脚本,受保护函数文件(每分钟文件)、Java函数、COM或. net组件以及数据文件。

MATLAB生产服务器

MATLAB MEX文件和MATLAB函数。这些文件必须有一个单一入口点。

MATLAB脚本,MATLAB类文件,受保护函数文件(每分钟文件)、Java函数、COM或. net组件以及数据文件。MATLAB类文件可以是依赖文件。

相关的话题