2012-10-18 45 views
1

我想在matlab中编译myfunction.m。该函数调用另一个文件夹中定义的另一个函数(otherfunction.m)。这个折叠被添加到matlab路径,所以如果我运行:编译来自不同文件夹的Matlab文件

myfunction 

从Matlab命令窗口一切正常。

如果我尝试编译如下:

mcc -m myfunction.m -I /CompletePathToOtherFunction otherfunction.m 

exe文件不起作用。我怎样才能管理这个?

+2

您是否试过 'mcc -m myfunction.m -I/CompletePathToOtherFunction'?还用'-v'选项查看了这个输出结果?任何错误,任何警告? – Tobold

回答

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的目录。

+0

我意识到otherfunction.m调用另一个函数(let call secondfunction.m),第二个函数在otherfunction.m的同一个文件夹中,使用try/catch获得:'未定义函数或方法'secondfunction'。我按照你的建议仅使用目录的路径进行编译。 –

+0

@ Lazza87奇怪。你可以使用GUI来编译,还是你必须使用代码?通过在命令窗口中键入'deploytool'来打开GUI编译器。一旦你在GUI中选择了一个项目位置,并指定了一个“控制台应用程序”(或其他任何你想要的),然后你点击链接“添加主文件”并添加myfunction.m。然后查找链接“添加其他引用/文件夹”(或类似的东西),点击它,然后手动添加包含otherfuncion.m和secondfunction.m的目录。然后点击编译按钮。希望这是有效的,因为那样我就没有想法了:-) –

+0

使用GUI编译器它的工作原理!这意味着我使用的命令有错误!无论如何谢谢你! –