我正在尝试在 matlab 中编译 myfunction.m。此函数调用另一个文件夹中定义的另一个函数 (otherfunction.m)。此折叠已添加到 matlab 路径中,因此如果我运行:
myfunction
从 Matlab 命令行窗口一切正常。
如果我尝试编译为:
mcc -m myfunction.m -I /CompletePathToOtherFunction otherfunction.m
exe文件不起作用。我该如何管理?
从文档中:
“在命令行上传递 -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 的目录。