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文件源代码中搜索指定为回调字符数组或参数的文本函数宏指令
,fminbnd
,fminsearch
,funm
,fzero
函数或任何ODE求解器。
要查找用作回调字符数组的文本,请在MATLAB文件中搜索字符“callback”或“fcn”。这个搜索找到了所有回调
图形对象定义的属性,例如uicontrol
和uimenu
.此外,它还发现图形和轴的属性Fcn
,如CloseRequestFcn
,也支持回调。万博1manbetx
在UNIX上运行独立应用程序时,可能会出现一些警告®系统。
抑制libjvm.so
警告,请为您的平台正确设置动态库路径。看到设置MATLAB运行时路径的部署.
您还可以使用编译器选项- r -nojvm
以设置应用程序的nojvm
运行时选项,如果应用程序能够在没有Java的情况下运行。
如果你的程序使用图形,你用-nojvm
选项时,将得到一个运行时错误。
如果收到此错误,有几个可能的原因需要考虑。
无法创建输出文件文件名
可能的原因包括:
其中的文件夹缺少写权限MATLAB编译器SDK正在尝试写入文件(很可能是当前工作文件夹)。
所在文件夹中的可用磁盘空间不足MATLAB编译器SDK正在尝试写入文件(很可能是当前工作文件夹)。
如果您正在创建一个独立的应用程序,并且已经对其进行了测试,那么可能有一个进程正在运行,并且正在阻塞MATLAB编译器SDK用新版本覆盖它。
如果你创建一个带有自文档在线帮助的MATLAB文件并将其打包,以下命令的结果是难以理解的:
帮助文件名
请注意
出于性能原因,MATLAB文件注释在前面被去掉了MATLAB运行时加密。
该特性允许您安装多个版本的MATLAB运行时在同一台机器上不支持万博1manbetxMac OS X.当您收到一个新版本的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
在编译模式下,对MATLAB的调用中只能出现一个参数printdlg
函数(例如,printdlg (gcf)
).
在调用时,您不会收到错误printdlg
与多个参数。然而,当包含多参数调用的应用程序被打包时,操作失败,并出现以下错误消息:
错误使用= => printdlg在11 printdlg只需要一个参数
哪一个
不搜索当前工作文件夹使用哪一个
,不会导致在已部署的应用程序中搜索当前工作文件夹。此外,它可能导致不可预知的行为开放
函数。
函数pathtestmyFile.mat打开('myFile.mat”)
使用下列解决方案之一作为替代方案:万博 尤文图斯
使用松材线虫病
函数显式指向当前文件夹中的文件,如下所示:
((pwd /开放myFile.mat'))
而不是用一般开放
功能,使用负载
或用于特定文件类型的其他专用函数,如负载
显式检查当前文件夹中的文件。例如:
负载myFile.mat
把你的文件包括在运行应用程序所需的文件区域的编译器应用程序,AdditionalFiles
选择使用compiler.build
函数,或——一个
标志使用世纪挑战集团
.
你不能使用c++SetData
方法动态调整大小mwArray
年代。
例如,如果您正在处理以下数组:
[1 2 3 4]
你不能使用SetData
将数组的大小增加到五个元素的长度。
使用部署应用程序打包的有效和无效文件类型如下:
目标应用程序 | 有效的文件类型 | 无效的文件类型 |
---|---|---|
独立应用程序 |
MATLAB MEX文件、MATLAB脚本、MATLAB函数和MATLAB类文件。这些文件必须有一个单一入口点。 |
受保护功能文件( |
库的编译器 |
MATLAB MEX文件、MATLAB函数和MATLAB类文件。这些文件必须有一个单一入口点。 |
MATLAB脚本,受保护函数文件( |
MATLAB生产服务器 |
MATLAB MEX文件和MATLAB函数。这些文件必须有一个单一入口点。 |
MATLAB脚本,MATLAB类文件,受保护函数文件( |