Does MEX compiler (and the associated shared files) automatically ship with all MATLAB distributions of any license type?

5 ビュー (過去 30 日間)
When creating a mex file, I see many dependencies on other (MATLAB) shared files buried in it. The question is, if I take this compiled file to another system (of the same architecture) with some random MATLAB license, are all of these dependency files guaranteed to exist in that particular installation of MATLAB? Is there a particular license that would not have mex dependency files?
  5 件のコメント
James Tursa
James Tursa 2020 年 12 月 28 日
編集済み: James Tursa 2020 年 12 月 28 日
"Is there a way to staticly link the generated Mex files with all of these dependencies?"
No, at least not in the sense that I think you are asking. The internal storage mechanisms for MATLAB variables (called an mxArray in C/C++ lingo) routinely change from MATLAB version to MATLAB version. Something as simple as getting the dimensions of a variable would look in different places in the mxArray depending on the MATLAB version. The technique for figuring out whether a variable is complex or not totally changed in R2018a (checking the Pi pointer field vs checking a bit in the flags field). All of those background library dependencies that do this in the original version wouldn't even make sense if they were running in the wrong version of MATLAB. At some point there would need to be an interface to convert from one mxArray definition to the other in order to input or output variables to/from the mex routine ... and there isn't any such interface.
Bottom line is that the mex routine compiled in one MATLAB version may or may not work in another MATLAB version. The only guarantee that you have is it will work if you recompile the mex routine in the other version.
A.B.
A.B. 2020 年 12 月 28 日
Interesting. That's good know. I guess the only way to ensure compatibility is to just use it with different MATLAB versions.

サインインしてコメントする。

採用された回答

James Tursa
James Tursa 2020 年 12 月 28 日
Mex routines are not guaranteed to be compatible between different versions of MATLAB, for the very dependency reasons you already mention. You are probably going to be OK with same MATLAB version on same architecture. But anything other than that will just depend on the particulars and can't be guaranteed. Some mex routines will run fine on several versions of MATLAB. Others will not. And, of course, if the mex routine makes callbacks into MATLAB for specific functions then that would be another source of potential incompatibility.
  1 件のコメント
A.B.
A.B. 2020 年 12 月 28 日
編集済み: A.B. 2020 年 12 月 28 日
James, thank you. Do you know if it possible to staticly links all mex dependencies via the MEX compiler flags? Does matlab also provide the archive versions of their shared libraries? or is dynamic linking the only possiblity?

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMATLAB Compiler についてさらに検索

タグ

製品


リリース

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by