How can export a mex function from sources into a regular c++ function (shared library)) ?

13 vues (au cours des 30 derniers jours)
mathieu
mathieu le 19 Jan 2019
Commenté : Mark McBroom le 21 Jan 2019
How do I export mex functions (having the sources) into c++11 code (ie., without mex/matlab dependency) ?
Can I do that with the Library Compiler App [1] to create a shared c++ library (as source) ?
If not, how to adapt the mex functions into a regular c++11 ?

Réponses (1)

Mark McBroom
Mark McBroom le 19 Jan 2019
To clarify, you have mex functions and you want those translated to a C++ library? Assuming the source code is either C or C++, then you simply need to compile/link into a DLL. You can use any compiler/linker to do this ( vis studio, gcc, etc). If the C/C++ code relies on MATLAB libraries, you can use the mbuild command.
  2 commentaires
mathieu
mathieu le 19 Jan 2019
Modifié(e) : mathieu le 19 Jan 2019
I actually want to export MEX sources into regular c++ sources, not the binaries in that case.
The same way we can export m functions into c/c++ sources (without matlab dependency).
The MEX sources (a custom matlab function written in c/c++) are relying on many MEX functions (eg., mxIsStruct, mexErrMsgTxt , mxGetField, mxGetPr, mxGetDimensions, mxGetClassID ...). If I transform code into another that does not depend on those mex functions, it would be what I call regular c++ code.
Mark McBroom
Mark McBroom le 21 Jan 2019
There is no way to generate C code for the MEX functions being used in your MEX sources... but the primary purpose of the MEX functions ( mxIsStruct, etc. ) is to all MATLAB to call your your C++ code. If you are planning to use your C++ code outside of MATLAB, then you no longer need these MEX functions. It sounds to me like you will have to modify your C++ code to get rid of all of the usages of MEX functions.

Connectez-vous pour commenter.

Catégories

En savoir plus sur C++ Shared Library Integration dans Help Center et File Exchange

Produits


Version

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by