1

我正在尝试使用“loadlibrary”函数向 matlab 添加一个简单的库。我首先尝试使用 mex -setup 将 gcc 编译器链接到 matlab 并得到这个:

可用于 mex 的选项文件有:

1:/Applications/MATLAB_R2012a.app/bin/mexopts.sh:用于构建 gcc MEX 文件的模板选项文件

0:不做任何改动就退出

所以我只选择了 1 并继续。然后我收到了这条消息:


警告:MATLAB C 和 Fortran API 已更改为支持具有超过 2^32-1 个元素的 MATLAB 变量。在不久的将来,您将需要更新您的代码以使用新的 API。您可以在以下位置找到更多信息: http ://www.mathworks.com/help/techdoc/matlab_external/bsflnue-1.html 使用 -largeArrayDims 选项构建可启用新 API。


在此之后我输入: loadlibrary('Samplelib.dylib','Samplelib.h')

使用 loadlibrary 时出错(第 419 行)无法预处理输入文件。预处理器的输出是:/bin/bash: gcc-4.2: command not found

任何想法为什么会发生这种情况?

4

2 回答 2

0

你在mac上使用matlab,对吗?您需要先安装 gcc,然后才能继续。试试 Xcode - 你需要gcc-4.2因为它是硬编码在提到的 mexopts.sh 如何安装它取决于你的 MacOS 版本,但是谷歌 xcode,你会发现很多链接。

于 2012-09-21T18:47:58.540 回答
0

第一个“警告”只是告诉您 C API 现在比以往任何时候都更好,因为它支持大量元素,但需要在以后版本的 Matlab 中使用新选项启用。长话短说,你不在乎。关于 gcc-4.2 的下一个错误意味着 gcc 4.2 编译器不在您的路径上。如果您执行以下操作:

    [s1,r1] = system('which gcc')
    disp( r1 )
    disp( s1 )
    [s2,r2] = system('which gcc-4.2')
    disp( r2 )
    disp( s2 )

很可能,其中一个或两个都会返回错误。确保 gcc 编译器位于您的PATH环境变量中。

就像againor说的那样,您还需要安装编译器。:-)

于 2012-09-21T18:48:04.117 回答