简体   繁体   中英

C++ source compilation using MATLAB Engine and g++

如果您可以提供有关如何使用MATLAB Engine和g ++在Ubuntu环境中编译c ++源代码文件的一些指导,将对您有所帮助。

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 ie $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.

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 !!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM