How to determine which libraries to include when using Matlab C++ API?
4 次查看(过去 30 天)
显示 更早的评论
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.
1 个评论
Siddharth Bhutiya
2019-1-8
Below are some documentations link that could help identify what API uses which libraries and accordingly you can use the corresponding flag.
Also you could take a look at the answers post below
Here, it uses the "--as-needed" flag to link only the libraries that are used
回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Call MATLAB from C++ 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!