主要内容

限制

包装MATLAB和工具箱

MATLAB®编译器™金宝app支持完整的MATLAB语言和几乎所有基于MATLAB的工具箱,除了:

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

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

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

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

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

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

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

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

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

的完整列表MATLAB编译器限制,访问://www.tatmou.com/下载188bet金宝搏products/compile金宝appr/compiler_support.html

请注意

控件不支持的函数列表金宝appMATLAB编译器看到MATLAB编译器和MATL金宝appAB编译器SDK不支持编译的函数

修复回调问题:缺少函数

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

请注意

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

如果在MATLAB文件中调用函数的唯一位置是在以下任何一种情况下调用该函数,则依赖分析无法定位该函数:

  • 回调弦

  • 属性的参数传递给函数宏指令函数或ODE求解器

    提示

    中的依赖函数也可以对依赖分析程序隐藏.mat由已编译应用程序加载的文件。使用mcc -参数或% #函数识别Pragma.mat类所支持的文件类或函数金宝app负载命令。

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

症状

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

在独立模式下,从FEVAL引用未知函数change_colormap。

解决方案

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

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

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

  • 使用——一个选项

将回调函数指定为字符数组。创建一个仅在回调字符数组中指定的所有函数的列表,并使用单独的方法传递这些函数% #函数编译指示语句。方法中列出的功能将覆盖产品依赖项分析并指示其显式包含% #函数语法。

例如,调用change_colormap函数my_test说明了这个问题。为了确保MATLAB编译器处理change_colormapMATLAB文件,列出函数名% #函数编译指示。

函数my_test() %图形库回调测试应用程序%#P_btn = uicontrol(gcf,…“风格”,“按钮”,…'Position',[10 10 133 25],…“字符串”,“黑白”,……“回调”、“change_colormap”);

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

“回调”,@change_colormap);

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

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

中查找缺失的函数MATLAB文件

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

要查找用作回调字符数组的文本,请在MATLAB文件中搜索字符“callback”或“fcn”。这个搜索可以找到所有的回调图形对象定义的属性,例如uicontrol而且uimenu.此外,它还可以找到以。结尾的图形和轴的属性Fcn,例如CloseRequestFcn,也支持回调。金宝app

压制警告UNIX系统

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

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

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

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

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

无法创建输出文件

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

不能创建输出文件文件名

可能原因包括:

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

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

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

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

如果你创建一个带有自文档在线帮助的MATLAB文件并打包它,下面命令的结果是无法理解的:

帮助文件名

请注意

出于性能考虑,MATLAB文件注释在此之前被剥离MATLAB运行时加密。

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

允许您安装多个版本的MATLAB运行时在同一台机器上不支持金宝appMac OS X.当您收到新版本的MATLAB时,必须重新编译和重新部署所有应用程序和组件。的新版本时也是如此MATLAB运行时的旧版本,必须在目标计算机上删除MATLAB运行时在安装新设备之前。的一个版本MATLAB运行时在目标机器上。

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

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

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

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

在打包模式下调用多参数PRINTDLG的限制

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

调用时不能收到错误printdlg有多个参数。然而,当包含多参数调用的应用程序被打包时,操作失败,并显示以下错误消息:

printdlg需要一个参数

哪一个不搜索当前工作文件夹

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

函数路径测试myFile.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类文件可以是依赖文件。

相关的话题