C++ source compilation using MATLAB Engine and g++
Asked Answered
H

2

8

It would be helpful if you could provide some guidance on how to compile c++ source code files in an Ubuntu environment, using the MATLAB Engine with g++.

Heptarchy answered 21/3, 2017 at 20:17 Comment(0)
C
4

I assume that you want to know the procedure for compiling the c++ code (which calls MATLAB engine) using g++ from Linux Terminal. To do so, follow the steps below:

  1. Include following paths in PATH variable:

    a) Location of MATLAB i.e. $matlabroot/bin b) $matlabroot/sys/os

    You can do this by using the command 'setenv PATH $matlabroot/bin:$matlabroot/sys/os:$PATH ' .

  2. In the command prompt, navigate to the directory where the cpp code is located using cd command. For instance, if you are compiling engdemo.cpp, you need to navigate to $matlabroot/extern/examples/eng_mat/engdemo.cpp

  3. You need to call the compiler with required include files and libraries. For this you can use -I and -L switches for that. Note that the order is important. So you need to use the command as below:

    g++ engdemo.cpp -I "$matlabroot/extern/include" -L "$matlabroot/bin/glnxa64" -leng -lmat -lmex -lut -o engdemo.o

  4. The above command will generate an object file engdemo.o. To execute this, use the command ./engdemo.o

    You can refer to the document at http://www.umiacs.umd.edu/~jsp/Downloads/MatlabEngine/MatlabEngine.pdf for more help regarding C++ and MATLAB.

Carabin answered 26/3, 2017 at 15:59 Comment(0)
S
1

The compilation process in C/C++ is divided in two phases:

First, the compilation where source code is transformed into machines code with multiples object files (.o or .obj).

Then, the link to transform object files into a single executable file (.dll or .exe).

C/C++ programs that run matlab engine need three things:

1> A compiler that is compatible with matlab engine.

2> Reference to API header files('.h' for c or '.hpp' for c++) for compilation.

3> Reference to the libraries('.lib' for windows,'.so' for linux) for external symbol link.

You can see comptatible linux based system compiler here. The GCC C/C++ 4.9.x is compatible so you can use g++.

As this pdf suggested, the API header files should be there $matlabroot/extern/include and the .so files should be in $matlabroot/ bin/glnax64 where $matlabroot is your matlab install folder

Set up Environment variables

Open your temnial with ctrl + alt + T and type :

setenv PATH $matlabroot/bin:$matlabroot/sys/os:$PATH

You can then go to the folder where source file is located, let's say $matlabroot/extern/examples/eng_mat/ with the following command :

cd $matlabroot/extern/examples/eng_mat/

You need to do the compilation with :

g++ -c engDemo.cpp -I '$matlabroot/extern/include' -leng -lmat -lmex -lut

After that, a file named engDemo.o should be created. The -leng -lmat -lmex -lut options are probably needed among other things because of the usage of the matlab interpreter that should be located in $matlabroot/bin

And the external symbol link with :

g++ -o engDemo -L '$matlabroot/bin/glnax64'

Be careful as this path sugested that you are on a x64 architecture machine, if you are not,the path might be slightly different.

Then you can execute your file just by doing ./engDemo

I can't install the matlab engine on the laptot I am using so I'm unable to test the instruction I gave you but It should be done this way.

Hope it helps !!

Swath answered 31/3, 2017 at 15:40 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.