0

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

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

4

1 回答 1

1

你试图做的事情是行不通的。

当您使用 MATLAB Compiler 编译应用程序时,它会查找您的 main 函数所依赖的所有代码,对其进行加密,并将其打包成一个可执行文件,该可执行文件稍后将针对 MATLAB Compiler Runtime (MCR) 执行。

MCR 只能执行以这种方式加密和打包的代码——不可能让它执行常规的未加密的 MATLAB 文件。因此,将内容转储到 MCR 用于解包代码文件的临时文件夹中不会有任何效果。

相反,请尝试找出原因,在依赖性分析期间,MATLAB Compiler 没有找到您的 main 函数所依赖的所有文件。

发生这种情况的原因有很多——依赖分析并不完美。例如,如果您的代码调用eval('myfunction'),则依赖关系分析将找不到myfunction. 我最近回答了另一个问题,另一个原因是问题所在。

在这些情况下,您可以使用pragma显式告诉 MATLAB Compiler 存在对 的依赖项。在包含对 的隐藏调用的文件中,在文件的顶部(实际上是任何地方,但通常您会将其放在顶部),将myfunction%#functionmyfunction

%#function myfunction

然后,MATLAB 编译器将强制它成为依赖项并将其包含在打包中。

或者,在使用应用程序mcc或在deploytool应用程序中设置包时,您可以myfunction自己手动添加到包中(尽管这样不会找到myfunction依赖的东西)。

于 2015-07-21T08:42:58.957 回答