1

我正在尝试在 matlab 中编译 myfunction.m。此函数调用另一个文件夹中定义的另一个函数 (otherfunction.m)。此折叠已添加到 matlab 路径中,因此如果我运行:

myfunction

从 Matlab 命令行窗口一切正常。

如果我尝试编译为:

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

exe文件不起作用。我该如何管理?

4

1 回答 1

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

于 2012-10-18T23:33:15.097 回答