2

我正在尝试使用Mathworks的说明构建和运行 Matlab 引擎示例“engdemo.c”。当我尝试使用 command 运行它时,!./engdemo出现以下错误:

matlab: Command not found.
Can't start MATLAB engine

我在其他相关的 StackOverflow 帖子中没有找到解决方案(例如matlab 引擎“无法启动 MATLAB 引擎”如何解决“无法启动 MATLAB 引擎”命令?[关闭]

我在 /bin/csh 上安装了 csh(通过键入 进行检查which csh)。

我的 PATH 变量上有 Matlab,并且我已经根据Mac OSX的Mathworks 指令设置了 DYLD_LIBRARY_PATH 变量。以下是我在 .bash_profile 中包含的用于设置这些环境变量的行:

# Settings for Matlab Engine using Apple XCode
export PATH=$PATH:/Applications/MATLAB_R2014a.app/bin
export PATH=$PATH:/Applications/MATLAB_R2014a.app/bin/maci64
export DYLD_LIBRARY_PATH=/Applications/MATLAB_R2014a.app/bin/maci64:/Applications/MATLAB_R2014a.app/sys/os/maci64:$DYLD_LIBRARY_PATH

最终,我想构建一个使用 Matlab 脚本的 C 程序(最好使用 XCode 构建),但即使让演示工作也遇到麻烦,这令人沮丧。

4

1 回答 1

0

我使用Mathworks 的这些说明让它工作。主要区别在于我使用 mex 编译 engdemo.c 的方式。在我使用之前mex -client engine engdemo.c(见上文),但在尝试从 Matlab 提示符或我的 shell 运行演示时会出错。

在那篇文章之后,我改为使用以下内容进行编译:mex -f /Applications/MATLAB_R2014a.app/bin/engopts.sh ./engdemo.c. 起初,这引发了一个错误,说它找不到 SDK“macosx10.7”(请注意,我使用的是 OSX 10.9)。我查看了 engopts.sh,发现很多对 macosx10.7 的引用。

这篇文章之后,我通过将所有对 macosx10.7 的引用更改为 macosx10.8 来编辑 engopts.sh。(请注意,即使我有 osx10.9,我也有 10.8 SDK,您可以通过键入findxcode-select -print-path来查看它-name MacOSX10.8.sdk。我决定使用 10.8,因为在那篇文章中有人说他们使用时其他东西坏了10.9,但我自己还没有检查过。)

进行这些更改后,我重新运行mex -f /Applications/MATLAB_R2014a.app/bin/engopts.sh ./engdemo.c,它工作。从 shell 运行 ./engdemo 成功运行程序。这对我来说仍然很hackish。

于 2014-10-03T23:30:23.037 回答