我正在尝试在matlab中编译myfunction.m。此函数调用另一个文件夹中定义的另一个函数(otherfunction.m)。这个折叠被添加到matlab路径,所以如果我运行:
myfunction
来自Matlab Command Window的一切正常。
如果我尝试编译为:
mcc -m myfunction.m -I /CompletePathToOtherFunction otherfunction.m
exe文件不起作用。我该如何管理?
答案 0 :(得分:2)
来自文档:
“在命令行上传递-I:
您可以使用-I选项将文件夹添加到路径列表的开头 用于当前编译。编译时,此功能非常有用 当前不在MATLAB路径上的文件夹中的文件。“
所以在-I
之后我认为你应该把路径传递给包含otherfunction.m的目录,而不是otherfunction.m本身的路径。
要检查的其他一些事项:
使用which otherfunction
确保您使用正确版本的otherfunction
(如果存在多个版本)。如果路径上的两个函数具有相同的名称,则Matlab默认默认为路径中较高者。
如果您编译的代码使用eval
调用函数,那么您将需要提供包含该函数的目录(或显式提供该函数),即使该目录位于matlab路径上
如果所有其他方法都失败了,请尝试使用GUI编译器而不是mcc
命令。要调出GUI,只需在命令窗口中键入deploytool
即可。一旦你在GUI中选择了一个项目位置并指定了一个“控制台应用程序”(或者你想要的任何其他东西),那么你点击“添加主文件”链接并添加myfunction.m。然后查找链接“添加其他引用/文件夹”(或类似的东西),单击它,然后手动添加包含otherfuncion.m和secondfunction.m的目录。