【问题标题】:MATLAB compiler says some functions in my app are using not licensed for compilation functionsMATLAB 编译器说我的应用程序中的某些函数正在使用未经许可的编译函数
【发布时间】:2017-10-27 09:25:40
【问题描述】:
我想使用 matlab-compiler 编译我的应用程序,但有问题...
它说有些功能未获得编译许可。
问题是我没有在我的应用程序中使用这些功能(其中一个是fimath.m)。
我认为这些函数在我不知道的一些函数中使用。
我的问题是如何找出我的哪个函数正在使用这些函数,以便删除它们或用其他函数替换它们。
我的应用中有50多个功能,无法一一查看。
【问题讨论】:
标签:
matlab-compiler
matlab
compilation
compiler-warnings
dependency-management
matlab-compiler
【解决方案1】:
对于每个返回的“未授权”函数,您可以执行以下命令,
dbstop in <function name> % without the <>
然后为几个典型的输入/案例正常运行您的代码。如果它在这些断点之一处停止,请查看调用堆栈(使用 dbstack 或 MATLAB GUI 的编辑器选项卡),并从您自己的代码中识别入口点。
如果没有一个断点被命中,这可能意味着这些函数在代码中被引用,但某些逻辑阻止了它们的执行(实际上将它们变成“无法访问的代码”)。在这种情况下,您可能需要手动删除这些引用。要知道从哪里来,使用VTodorov 发布的链接中的信息,您可以使用
列出每个文件的依赖项
[fList,pList] = matlab.codetools.requiredFilesAndProducts('myFun.m');
可以在dir 的输出上调用(经过一些小的转换)。使用toponly flag 可能很有用。