How to determine which libraries to include when using Matlab C++ API?

4 visualizaciones (últimos 30 días)
Matt
Matt el 3 de En. de 2019
Comentada: Siddharth Bhutiya el 8 de En. de 2019
Given the example file matcreat.cpp on linux with GCC and Matlab installed correctly. I can link with
.... -L<matlab_root>/bin/glnxa64/ -Wl, -rpath,<matlab_root>/bin/glnxa64/ .... -lmx -lmex -lmat -lm
The resulting executable will work as intended. However, how do I know that I chose the correct libraries? If I remove all but -lmat I will receive "undefined reference to symbol 'mxCreateDoubleMatrix@@v7.3'. This appears to be something in the mxArray set of functions so I added -lmx and all the errors are resolved. The code compiles correctly and the output is as expected. I assume from this that -lmex -lm are extra and not needed, or found by the linker per normal processing. If I compile this same code with no libraries I get the following.
...: undefined reference to `mxCreateDoubleMatrix'
...: undefined reference to `mxGetPr'
...: undefined reference to `mxCreateDoubleMatrix'
...: undefined reference to `mxGetPr'
...: undefined reference to `mxCreateString'
...: undefined reference to `matOpen'
...: undefined reference to `matPutVariable'
...: undefined reference to `matPutVariable'
...: undefined reference to `matPutVariable'
...: undefined reference to `mxDestroyArray'
...: undefined reference to `mxDestroyArray'
...: undefined reference to `mxDestroyArray'
...: undefined reference to `matClose'
My question is what is the documentation or reference to tell me that I need to link against -lmat and -lmx for my code? And by extension which libraries to use for other features like the engine.

Respuestas (0)

Categorías

Más información sobre Call MATLAB from C++ en Help Center y File Exchange.

Etiquetas

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by