如何将 m 文件复制到 MATLAB 编译应用程序中的特定文件夹?
Posted
技术标签:
【中文标题】如何将 m 文件复制到 MATLAB 编译应用程序中的特定文件夹?【英文标题】:How can i copy m-files to a specific folder in MATLAB compiled application? 【发布时间】:2015-07-20 20:17:40 【问题描述】:我正在使用 MATLAB R2015a 应用程序编译器。选择我的主 m 文件后,MATLAB 找到了一些应用程序运行所需的文件,但是在编译并运行我的应用程序后,编译后的应用程序无法从已安装的工具箱(第三方工具箱)中找到某些特定的 m 文件。
现在我想将所有工具箱文件复制到目标文件夹C:\Users\My_Account\AppData\Local\Temp\My_Account\mcrCache8.5\Program_70\DDM
。 DDM
是我的工具箱文件夹,MATLAB 根据上面提到的嵌套文件自动创建它。我想将其他文件添加到此文件夹中。我怎样才能做到这一点?这是解决这个问题的好方法吗?
【问题讨论】:
您应该找出编译器在第三方工具箱中找不到文件的原因。复制到 mcr 的临时文件夹不是一个好的解决方案。您可以在编译时添加其他文件。 【参考方案1】:你试图做的不会奏效。
当您使用 MATLAB Compiler 编译应用程序时,它会查找您的 main 函数所依赖的所有代码,对其进行加密,并将其打包成一个可执行文件,该可执行文件稍后将针对 MATLAB Compiler Runtime (MCR) 执行。
MCR 只能执行以这种方式加密和打包的代码 - 无法让它执行常规未加密的 MATLAB 文件。因此,将内容转储到 MCR 用于解包代码文件的临时文件夹将不会有任何效果。
请尝试找出原因,在依赖关系分析期间,MATLAB 编译器没有找到您的 main 函数所依赖的所有文件。
可能发生这种情况的原因有多种 - 依赖关系分析并不完美。例如,如果您的代码调用eval('myfunction')
,则依赖关系分析将找不到myfunction
。我最近answered另一个问题是另一个原因是问题。
在这些情况下,您可以显式告诉 MATLAB 编译器,使用 %#function
编译指示依赖于 myfunction
。在包含对myfunction
的隐藏调用的文件中,在文件顶部(实际上是任何位置,但通常您会将其放在顶部),放置
%#function myfunction
然后,MATLAB 编译器将强制它成为一个依赖项并将其包含在打包中。
或者,当使用mcc
或在deploytool
应用程序中设置包时,您可以自己手动将myfunction
添加到包中(尽管这样不会找到myfunction
依赖的东西)。
【讨论】:
以上是关于如何将 m 文件复制到 MATLAB 编译应用程序中的特定文件夹?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 MATLAB libsvm 模型复制到 android 应用程序文件夹