我正在尝试使用“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:找不到命令
为什么会发生这种情况?
答案 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说的那样,你也需要安装编译器。 : - )