将.dylib库加载到matlab

时间:2012-09-21 18:09:24

标签: matlab gcc loadlibrary

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

mex可用的选项文件是:

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

0:退出但没有变化

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


警告:MATLAB C和Fortran API已更改为支持MATLAB            变量超过2 ^ 32-1个元素。在不远的将来            您将需要更新您的代码以使用新代码            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:找不到命令

为什么会发生这种情况?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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说的那样,你也需要安装编译器。 : - )