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

3 views (last 30 days)
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 ?

Answers (1)

Mark McBroom
Mark McBroom on 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 Comments
mathieu
mathieu on 19 Jan 2019
Edited: mathieu on 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 on 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.

Sign in to comment.

Categories

Find more on C++ Shared Library Integration in Help Center and File Exchange

Products


Release

R2018b

Community Treasure Hunt

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

Start Hunting!