我想使用matlab-compiler来编译我的应用程序,但是有问题...
它说有些功能没有获得编译许可
问题是我在我的应用中没有使用这些功能(其中一个是fimath.m
)。
我认为这些功能在我不了解的一些功能中使用
我的问题是如何找出我的哪个函数正在使用这些函数来删除它们或用其他函数替换它们
我的应用程序中有超过50个功能,并且无法逐个检查它们。
答案 0 :(得分:0)
对于每个返回的“未许可”功能,您可以执行以下命令,
dbstop in <function name> % without the <>
然后为几个典型的输入/案例正常运行代码。如果它在其中一个断点处停止,请查看调用堆栈(使用dbstack
或MATLAB GUI的“编辑器”选项卡),并从您自己的代码中识别入口点。
如果没有遇到任何断点,则可能意味着这些函数在代码中被引用,但是某些逻辑阻止了它们的执行(实际上将它们转换为“无法访问的代码”)。在这种情况下,您可能需要手动删除这些引用。要知道从哪里来,使用VTodorov发布的链接中的信息,您可以使用
列出每个文件的依赖关系[fList,pList] = matlab.codetools.requiredFilesAndProducts('myFun.m');
可以在dir
的输出上调用(经过一些小的转换)。使用toponly
flag。