我使用MATLAB编码器从MATLAB R2012b创建了一个MATLAB文件.mex
的 test.m
文件。
我得到了输出文件test_mex.mexa64
。我希望在MATLAB 7.5.0(R2007b)中使用此.mex
文件,但它显示以下错误。
Invalid MEX-file '/work/sreekanthl/test_mex.mexa64': libmwblascompat32.so:
cannot open shared object file: No such file or directory.
如何使这个.mex
文件在7.5.0(R2007b)中运行?
答案 0 :(得分:3)
虽然TMW说mex函数通常在版本之间是兼容的,但not officially supported和common会遇到问题。
唯一可靠的选择是使用mex
函数简单地重新编译Matlab编码器创建的源代码(即C代码)。
答案 1 :(得分:3)
我同意David Kelley's answer的一般MEX文件,但对MATLAB Coder生成的MEX文件有特殊的考虑。 MATLAB Coder生成的MEX代码有望向前兼容,但通常不会向后兼容。换句话说,您应该能够在比生成它的版本更新的版本中使用此类MEX代码,但是不能保证使用早期版本中的代码。
原因是MEX代码使用MATLAB附带的各种运行时库。这些库随着时间的推移而进步,而较新版本的MEX文件可能依赖于旧库未提供的功能,甚至可能依赖于旧版本中不存在的新库,如您所见。
如果要创建与早期版本兼容的MEX代码,可以生成独立目标,例如静态库或共享库(分别用于MATLAB Coder的LIB或DLL),以及:
loadlibrary
在MATLAB中调用生成的代码这些选项功能更多,但可以让您创建可在旧版本中使用的MEX文件或共享库。