2015-07-20 55 views
0

我正在使用MATLAB R2015a应用程序编译器。选择我的主要m文件后,MATLAB发现应用程序运行所需的一些文件,但在编译和运行我的应用程序后,编译后的应用程序无法从已安装的工具箱(第三方工具箱)中找到某些特定的m文件。如何将m文件复制到MATLAB编译应用程序中的特定文件夹?

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

+0

你应该知道为什么编译器没有在第三方工具箱中找到文件。复制到mcr的临时文件夹不是一个好的解决方案。编译时可以添加其他文件。 – Navan

回答

1

你试图做的事情不会奏效。

当您使用MATLAB编译器编译应用程序时,它会查找您的主函数依赖的所有代码,对其进行加密,并将其打包成稍后将在MATLAB编译器运行时(MCR)中执行的可执行文件。

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

相反,试图找出为什么,在依赖性分析期间,MATLAB编译器没有找到您的主函数依赖的所有文件。

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

在这种情况下,你可以明确告诉MATLAB编译器有一个依赖于myfunction,使用%#function编译。在包含隐藏调用myfunction,在文件的顶部(实际上任何地方,但通常你把它放在顶部)的文件,把

%#function myfunction 

MATLAB编译器将迫使这是个依赖性并将其包含在包装中。

或者,mccdeploytool应用程序设置包装时,你可以手动添加myfunction到包装自己(虽然这会再找不到的东西,myfunction取决于)。

相关问题