mex文件未在MATLAB 7.5.0中执行(R2007b)

时间:2015-08-31 13:18:03

标签: matlab mex matlab-coder

我使用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)中运行?

2 个答案:

答案 0 :(得分:3)

虽然TMW说mex函数通常在版本之间是兼容的,但not officially supportedcommon会遇到问题。

唯一可靠的选择是使用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),以及:

  1. 尝试使用loadlibrary在MATLAB中调用生成的代码
  2. 为它编写一个通用的MEX接口,并在旧版本中编译该MEX代码
  3. 这些选项功能更多,但可以让您创建可在旧版本中使用的MEX文件或共享库。