如何将m文件复制到MATLAB编译的应用程序中的特定文件夹?

时间:2015-07-20 20:17:41

标签: matlab matlab-compiler mcc

我正在使用MATLAB R2015a应用程序编译器。选择我的主m文件后,MATLAB找到了运行应用程序所需的一些文件,但在编译并运行我的应用程序后,编译的应用程序无法从已安装的工具箱(第三方工具箱)中找到某些特定的m文件。

现在我想将所有工具箱文件复制到目标文件夹C:\Users\My_Account\AppData\Local\Temp\My_Account\mcrCache8.5\Program_70\DDMDDM是我的工具箱文件夹,MATLAB基于上面提到的嵌套文件自动创建它。我想将其他文件添加到此文件夹。我怎样才能做到这一点?这是解决这个问题的好方法吗?

1 个答案:

答案 0 :(得分:1)

您尝试做的事情不会奏效。

使用MATLAB Compiler编译应用程序时,它会找到主函数所依赖的所有代码,对其进行加密,然后将其打包成一个可执行文件,稍后将根据MATLAB编译器运行时(MCR)执行。

MCR只能执行以这种方式加密和打包的代码 - 不可能让它执行常规的未加密MATLAB文件。因此,将内容转储到MCR用于解包代码文件的临时文件夹中将无法实现任何目标。

而是试图弄清楚为什么在依赖性分析期间,MATLAB编译器没有找到主函数所依赖的所有文件。

可能发生这种情况的原因有多种 - 依赖性分析并不完美。例如,如果您的代码调用eval('myfunction'),则依赖关系分析将找不到myfunction。我answered最近另一个问题是另一个原因是问题。

在这些情况下,您可以使用myfunction编译指示显式地告诉MATLAB编译器存在对%#function的依赖关系。在包含对myfunction的隐藏调用的文件中,位于文件顶部(实际上是在任何地方,但通常是您将其置于顶部),请

%#function myfunction
然后,

MATLAB Compiler将强制它成为依赖项并将其包含在打包中。

或者,在使用mccdeploytool应用设置包装时,您可以自己手动将myfunction添加到包中(尽管这样会找不到myfunction {1}}取决于)。