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

5 visualizzazioni (ultimi 30 giorni)
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 Commenti
James Tursa
James Tursa il 28 Dic 2020
Modificato: James Tursa il 28 Dic 2020
"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. il 28 Dic 2020
Interesting. That's good know. I guess the only way to ensure compatibility is to just use it with different MATLAB versions.

Accedi per commentare.

Risposta accettata

James Tursa
James Tursa il 28 Dic 2020
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 Commento
A.B.
A.B. il 28 Dic 2020
Modificato: A.B. il 28 Dic 2020
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?

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su MATLAB Compiler in Help Center e File Exchange

Tag

Prodotti


Release

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by